Apache 阿耳特弥斯应用程序不';我听不见对方说话

Apache 阿耳特弥斯应用程序不';我听不见对方说话,apache,activemq-artemis,Apache,Activemq Artemis,我的应用程序与1.5.8版本有springbootstarterartemis依赖关系。外部Artemis服务器使用2.6.0。一个应用程序正在将消息发布到以下地址:tacocloud.order.queue: 第一个应用的服务层: @Service @RequiredArgsConstructor(onConstructor = @__(@Autowired)) public class JmsOrderMessagingService implements OrderMessagingSer

我的应用程序与1.5.8版本有
springbootstarterartemis
依赖关系。外部Artemis服务器使用2.6.0。一个应用程序正在将消息发布到以下地址:tacocloud.order.queue:

第一个应用的服务层:

@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class JmsOrderMessagingService implements OrderMessagingService {

    private final JmsTemplate jmsTemplate;

    private final Destination destination;

    @Override
    public void sendOrder(Order order) {
        jmsTemplate.send(destination, session -> {
            Message message = session.createObjectMessage(order);
            message.setStringProperty("X_ORDER_SOURCE", "WEB");
            return message;
        });
    }

}
第二个应用正在监听地址:tacocloud.order.queue

@RestController
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class OrderReceiver {

    private final JmsTemplate jmsTemplate;

    @GetMapping("/new/message")
    public Message receiveOrder() {
        return jmsTemplate.receive("tacocloud.order.queue");
    }

}
虽然要侦听的指定地址是tacocloud.order.queue,但在Artemis管理控制台中,它注册为jms.queue.tacocloud.order.queue

问题:如何让两个应用程序彼此听到声音?您需要:

  • 更新您的客户端以使用最新版本的
    spring boot starter artemis
    (例如
    2.0.3.版本
  • 更新您的接受者以使用
    anycastPrefix=jms.queue。;multicastPrefix=jms.topic.
    。从2.4.0升级时,会注意到这一点
    您使用的是什么版本的Artemis?@JustinBertram 2.6.0能否确认您确实在客户端和服务器上使用了Artemis 2.6.0?Artemis 2.0.0中删除了JMS目的地(即“JMS.queue.”和“JMS.topic.”的前缀,因此我很惊讶在2.6.0中看到一个带有该前缀的队列。@JustinBertram我的应用程序具有spring boot starter Artemis 1.5.8版本的依赖性。外部Artemis服务器有2.6.0只是为了澄清…您是否尝试了选项1,但它不起作用?
    @RestController
    @RequiredArgsConstructor(onConstructor = @__(@Autowired))
    public class OrderReceiver {
    
        private final JmsTemplate jmsTemplate;
    
        @GetMapping("/new/message")
        public Message receiveOrder() {
            return jmsTemplate.receive("tacocloud.order.queue");
        }
    
    }