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

@JMSListener和@Consume注释之间的区别?

公冶高义
2023-03-14

我试图使用@consume注释bean使用通过spring JmsTemplate发送的JMS消息。当使用JMSTemplate发送消息时,使用者不接收消息。

然而,当使用Camel的ProducerTemplate发送时,将接收消息。

@org.springframework.jms.annotation.jMSListener和@org.apache.camel.consume之间有什么区别?

jmsTemplate.convertAndSend("jms:mailbox", message);

消费者逻辑

@Consume(uri="jms:mailbox")
    public void onRequest(String name) {
        System.out.println("Received message > "+name);
    }

共有1个答案

史俊德
2023-03-14

Apache Camel@consume注释可以从任何endpoint消费,支持消费。此注释以URI为参数。URI由scheme、path和可选Params组成。对于JMS组件,方案是JMS,path是destination(在您的例子中是mailbox),而params是定制consumer行为的附加选项。

Spring@jmslistener可以从JMS进行消费,并将destination作为参数。

您的代码无法工作,因为目标mailbox,而不是jms:mailbox。Springjmstemplate不知道JMS方案,它是Camel特有的。因此,在Spring端使用jmstemplate.convertandsend(“mailbox”,message),在Camel端使用@consume(uri=“jms:mailbox”)

 类似资料:
  • 问题内容: 问题: 1)和之间的区别? 我已经读过,两者都消除了将连接代码放入XML中的必要性,但是并没有获得两者之间的区别。 2)之间有什么区别,和? -何时使用哪个? -每个优点/缺点是什么? 问题答案: 并且确实是非常不同类型的注释。 以及类似的注释(,等)及其对应的JSR-330允许您声明要通过自动扫描拾取的bean , 或者它们为类注册了bean定义,因此它们大致等效于使用以下命令声明指

  • 问题内容: 今天,我试图使用Hibernate作为ORM创建一个应用程序。因此在创建时我有一个疑问。使用Hibernate映射文件(.hbm文件)或注释的最佳实践是什么?它的优缺点是什么?请帮助我理解。 问题答案: 没有功能上的差异。您可以使用两种方法(几乎)执行相同的操作 xml文件是在Java具有注释(在1.5中添加)之前使用的,因此可以将它们视为过时的映射方式 通常首选使用JPA注释,而不是

  • 问题内容: 方法和注释之间有什么区别?他们是一样的吗? 例如,这是: 与: 问题答案: 它们都达到相同的结果。通常不会使用注解(),因为您不会用看起来都一样的样板分配来填充代码。 请注意,为了使用注释,您的测试类应在其方法中进行注释或包含对的调用。

  • 这可能是一个很难回答的问题,但是在很多教程和示例中,我看到这些注释的使用就好像它们做了同样的事情。 但是,我使用时遇到了一些限制(尤其是依赖注入等),我找不到解释差异的源,如果有人能给出一个大致的概述,说明什么时候使用这两个,我将非常感谢。

  • 问题内容: Django 有两种方法,和。该文档说: 与gregation()不同,annotate()不是终端子句。annotate()子句的输出是QuerySet。 它们之间还有其他区别吗?如果没有,那为什么存在呢? 问题答案: 我将重点放在示例查询而不是文档中的引用上。A计算整个查询集的值。计算查询集中每个项目的汇总值。 聚合 返回包含查询集中所有书籍的平均价格的字典。 注解 q 是书籍的查

  • 问题内容: 我听到有人说“ JVM一定是Java解释器,但Java解释器不一定是JVM”。真的吗? 我的意思是Java解释器和JVM之间有区别吗? 问题答案: 是,有一点不同。 Java虚拟机: 一种软件“执行引擎”,可安全,兼容地执行微处理器(无论是计算机还是其他电子设备中)的Java类文件中的字节码。 Java解释器: 交替解码并执行某些代码体中的每个语句的模块。Java解释器解码并执行Jav