ヘッダーでメッセージを送信しようとしてエラーが発生しましたか?
キーと値の両方に文字列型を使用しようとしましたか?
#'P_basic'{headers = [{"key", "value"}]}
アップデート:私は、パッケージrabbit_commonのソースコードを調査し、私は、ヘッダータイプについて何かを見つけました。
-type(amqp_field_type() ::
'longstr' | 'signedint' | 'decimal' | 'timestamp' |
'table' | 'byte' | 'double' | 'float' | 'long' |
'short' | 'bool' | 'binary' | 'void' | 'array').
-type(amqp_property_type() ::
'shortstr' | 'longstr' | 'octet' | 'shortint' | 'longint' |
'longlongint' | 'timestamp' | 'bit' | 'table').
-type(amqp_table() :: [{binary(), amqp_field_type(), amqp_value()}]).
-type(amqp_array() :: [{amqp_field_type(), amqp_value()}]).
-type(amqp_value() :: binary() | % longstr
integer() | % signedint
{non_neg_integer(), non_neg_integer()} | % decimal
amqp_table() |
amqp_array() |
byte() | % byte
float() | % double
integer() | % long
integer() | % short
boolean() | % bool
binary() | % binary
'undefined' | % void
non_neg_integer() % timestamp
).
だからヘッダは三つの項目のタプルが(二ない)である。rabbit_basic.erlにおけるタイプヘッダ()がある:
-type(headers() :: rabbit_framing:amqp_table() | 'undefined').
およびモジュールrabbit_framing_amqpにおけるタイプの定義が存在しますこれはバイナリ、値の型、値です。だから、各ヘッダにそのような方法を定義する必要があります:私は質問にスタックトレースを追加しました
BooleanHeader = {<<"my-boolean">>, bool, true}.
StringHeader = {<<"my-string">>, longstr, <<"value">>}.
IntHeader = {<<"my-int">>, long, 1000}.
を - しかし、AMQPチャンネルは単に「基本後に突然閉じているので、それは、私は信じて、役に立ちません.publish '呼び出し。値の型も違いはありません - 文字列と整数を試しました。 – NikitaBaksalyar
ありがとうございます - それは完璧に動作します!この動作がうまく文書化されていないのは奇妙です。 – NikitaBaksalyar