Artemis 应用程序听不到对方的声音

Artemis apps don't hear each other

我的应用程序 spring-boot-starter-artemis 依赖于 1.5.8 版本。外部 Artemis 服务器使用 2.6.0。一个应用正在向地址发布消息:tacocloud.order.queue:

@Configuration
public class ApplicationConfiguration {

    @Bean
    public Destination orderQueue() {
        return new ActiveMQQueue("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.

问题:如何让 2 个应用互相听到对方的声音?

您需要:

  1. 更新您的客户端以使用最新版本的 spring-boot-starter-artemis(例如 2.0.3.RELEASE)。
  2. 更新您的接受器以使用 anycastPrefix=jms.queue.;multicastPrefix=jms.topic.。从 2.4.0 升级时,the Artemis documentation 中会注明这一点。