我遇到了RMQ中的回叫队列功能。而且它也很漂亮。整个想法是我创建了一个消息队列(queue1),其回调队列(queue1_cb)和dlq(queue1_dlq)。我正在通过2个节点实现HA功能。
当我部署2个应用程序实例时出现问题( Spring boot 中有一个发送方和一个接收方应用程序)。两者都在侦听同一HA群集。情况如下。
有人可以建议我解决婚恋问题吗? 下面是我的代码。
在接收方:
@Override
public void onMessage(Message arg0, Channel arg1) throws Exception {
String msg = new String (arg0.getBody());
AppObject obj = mapper.readValue(msg, AppObject.class);
Packet packet = new Packet();
packet.setChannel(arg1);
packet.setMessage(arg0);
packet.setAppObject(obj);
AppParam.objects.put(
String.valueOf(key , packet);
//Call third party API
}
确认并发送回叫消息时:
public boolean pushMessageToCallBack(String key , AppObject packet, Channel channel, Message message){
RabbitTemplate replyRabbitTemplate = //Get the RabbitTemplate object. It is handled properly.
replyRabbitTemplate.convertAndSend(packet);
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
}