您是否嘗試使用標題發送郵件時遇到任何錯誤?
您是否嘗試爲鍵和值使用字符串類型?
#'P_basic'{headers = [{"key", "value"}]}
更新:我調查了包rabbit_common的源代碼,我發現了一些關於頭型。有一種類型的報頭()在rabbit_basic.erl:
-type(headers() :: rabbit_framing:amqp_table() | 'undefined').
而且有模塊rabbit_framing_amqp類型的定義:
-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
).
所以標題是三個項目的元組(而不是兩個) ,它是二進制的,值的類型,值。所以,你必須定義每個標題這樣的方式:
BooleanHeader = {<<"my-boolean">>, bool, true}.
StringHeader = {<<"my-string">>, longstr, <<"value">>}.
IntHeader = {<<"my-int">>, long, 1000}.
我添加了一個堆棧跟蹤的問題 - 但它不會幫助,我相信,因爲AMQP通道只需經過「基本突然關閉.publish'調用。一種類型的值也沒有區別 - 我嘗試了字符串和整數。 – NikitaBaksalyar
謝謝 - 它完美的作品!奇怪的是,這種行爲沒有很好地記錄。 – NikitaBaksalyar