我有一個項目,我通過AMQP發送帶有簽名JSON對象的消息。在服務器端,我有以下幾點:Spring AMQP convertSendAndReceive VS sendAndReceive
public class MyServerHandler implements MessageListener{
...
@Override
public void onMessage(Message msg)
{
String _payload = new String(msg.getBody(), StandardCharsets.UTF_8);
System.out.println(_payload);
...
現在,如果我使用的方法convertSendAndReceive這樣的:
String msg = ...deo // JSON object (String)
Object response = getRabbitOperations().convertSendAndReceive(_myExchange, _myRoutingKey, msg,
new MessagePostProcessor()
{
public Message postProcessMessage(Message message) throws AmqpException
{
message.getMessageProperties().setDeliveryMode(MessageDeliveryMode.NON_PERSISTENT);
message.getMessageProperties().setRedelivered(false);
message.getMessageProperties().setUserId(_myUser);
message.getMessageProperties().setType(_myType);
return message;
}
}
);
當我得到了AMQP消息的內容我得到的字符串發送,但在引號:
String _payload = new String(msg.getBody(), StandardCharsets.UTF_8);
System.out.println(_payload);
"eyJ4NWMiOlsiTUlJRHV6Q0NBcU9nQXdJQkFnSUNDMEV3RFFZSktvWklodmNOQVFFR....."
但是,如果我用sendAndReceive實現方法具d,我沒有得到引號:
MessageProperties mp = new MessageProperties();
mp.setDeliveryMode(MessageDeliveryMode.NON_PERSISTENT);
mp.setRedelivered(false);
mp.setUserId(_myUser);
mp.setType(_myType);
Message _m = new Message(msg.getBytes(), mp);
Object _response = getRabbitOperations().sendAndReceive(_myExchange, _myRoutingKey, _m);
在服務器端,我得到(使用相同的代碼):
eyJ4NWMiOlsiTUlJRHV6Q0NBcU9nQXdJQkFnSUNDMEV3RFFZSktvWklodmNOQVFFR.....
這是爲什麼?我可以改變它以同樣的方式工作嗎?哪一個會是正確的? 謝謝
您需要顯示其餘配置;看起來你在發送和接收端有不匹配的消息轉換器。 –