Apache 阿耳特弥斯应用程序不';我听不见对方说话
我的应用程序与1.5.8版本有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
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");
}
}