当前位置: 首页 > 知识库问答 >
问题:

在相同的配置类中配置jms接收和发送队列

滕星纬
2023-03-14

我有下面的mq配置类,通过它我可以在接收队列中接收消息,但是当使用JmsTemplate bean时,我的消息不会发送到队列中。我没有获得任何JMSException或任何异常,send()似乎成功。它是一段XML字符串,我将其作为有效负载发送,如下所示:

@EnableJms
@Configuration
public class MessageQueueConfiguration {

    @Bean(name = "test-factory")
    public ConnectionFactory getMqConnectionFactory(String host, int port, String queueManager, String channel) throws JMSException {
        final MQConnectionFactory connectionFactory = new MQConnectionFactory();
        connectionFactory.setQueueManager(queueManager);
        connectionFactory.setHostName(host);
        connectionFactory.setPort(port);
        connectionFactory.setChannel(channel);
        connectionFactory.setTransportType(WMQ_CM_CLIENT);
        return connectionFactory;
    }

    @Bean("test-container")
    public JmsListenerContainerFactory containerFactory(final ConnectionFactory connectionFactory, final ErrorHandler errorHandler) {
        final DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setErrorHandler(errorHandler);
        return factory;
    }

    @Bean(name = "receive")
    public Destination receive(@Value("${receive-queue}") final String destination) throws JMSException {
        return new MQQueue(destination);
    }

    @Bean(name = "send")
    public Destination send(@Value("${send-queue}") final String destination) throws JMSException {
        return new MQQueue(destination);
    }

    @Bean(name = "sender")
    public JmsTemplate testTemplate(@Qualifier("test-factory") final ConnectionFactory connectionFactory, @Qualifier("send") final Destination destination) {
        final JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory);
        jmsTemplate.setDefaultDestination(destination);
        return jmsTemplate;
    }
}

我的问题是我配置错误了吗?我是否需要多个ConnectionFactory或container Factory,因为我有接收和发送队列?

我的听众:

@JmsListener(destination = "${receive}", concurrency = "1-1", containerFactory = "test-container")
public Model<Message> getMessage(@Payload final String message) {...}

共有1个答案

谢和颂
2023-03-14

您不显示您的侦听器,但为什么您有两个队列?

看起来像是发送到一个队列,然后从另一个队列接收。您需要从发送到的同一目的地接收。

 类似资料:
  • 我有一些问题,因为文件不清楚… 如何设置WSO2 ESB环境,使其能够读写来自WSO2MessageBroker的消息。 我跟踪了ConfigurewithWSO2MessageBroker null 我的代理人 我的SOAP UI调用 根据doc,我应该在JMS message Broker中看到消息,但我得到了 第二:此错误是否与消息生成器和格式化程序有关???? 任何帮助都很好...但我被困

  • 我有一个spring jms应用程序,目前使用ibm mq server进行队列管理。我们计划将中间件改为rabbitmq,以获得更好的性能并有效地控制它,但希望保持spring jms代码的原样。我遵循了以下链接中提到的所有步骤。https://www.rabbitmq.com/jms-client.html

  • 我在Spring Boot中的资源类路径位置中有多个yml文件,就像下面的Spring Boot结构一样。起初,我只为abc的申请而写。当时,这个文件的所有值都加载到了相应的类中,但是当我添加到另一个文件应用程序xyz时。然后,yml也会加载到相应的配置类中,但此时只加载应用程序xyz的值。两个配置类中的yml。因此,需要帮助在单个构建中配置相应配置文件中两个文件的值: 申请内容abc。yml a

  • 我使用Mule ESB来设计一个过程,通过这个过程可以向一个主题发布消息。订阅者将收听主题并接收消息。每个用户对消息的反应不同。这里的目标是能够从HTTP向主题发送测试消息,以测试订阅者。 下面是如何配置JMS连接: 这是流程: 当我运行测试时,我得到以下错误: 任何建议将不胜感激。 罗斯

  • 在Spring Hibernate XML配置中,我有 我知道SpringJava配置的等价物如下:LocalSessionFactoryBuilder(dataSource())。AddAnnotatedClass(Foo.class)。buildSessionFactory(); 我的问题是,如果我不使用LocalSessionFactoryBuilder类,而是使用HibernateJpaV

  • 这个 relationship() 函数定义两个类之间的链接。当链接定义了一对多或多对多关系时,当加载和操作对象时,它被表示为一个Python集合。本节介绍有关收集配置和技术的其他信息。 处理大型集合 的默认行为 relationship() 是将完全加载项集合中,根据加载策略的关系。另外, Session 默认情况下,只知道如何删除会话中实际存在的对象。当父实例标记为删除并刷新时, Sessio