首页 > 解决方案 > 同步发送 JMS 消息

问题描述

假设我有一个非常简单的带有消息生产者的 JMS 设置

@Stateless
public class MessageProducer {

    @Inject
    private JMSContext context;
    @Resource(mappedName = "java:global/jms/MyFirstJmsQueue")
    private Destination myFirstJmsQueue;

    public void sendMessage(String messageToSend) {
        this.context.createProducer().send(this.myFirstJmsQueue, messageToSend);
        System.out.println("SEND MESSAGE: " + messageToSend);
    }
}

和消息消费者:

@MessageDriven(activationConfig = {
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "java:global/jms/MyFirstJmsQueue")})
public class MessageConsumer implements MessageListener {

    @Override
    public void onMessage(Message message) {
        try {
            System.out.println("RECEIVED MESSAGE: " + message.getBody(String.class));
        } catch (final JMSException e) {
            e.printStackTrace();
        }
    }
}

现在一切都很好。成品应该与队列异步工作。

测试不应该。为了测试设置是否正常工作,我需要测试来配置这些类以同步工作。

或者,这些类可以保持异步,但测试需要添加一些“等到所有消息都发送完毕”的内容。

JMS 是否可以使用这些选项中的任何一个?

笔记:

标签: javajms

解决方案


推荐阅读