【问题标题】:Unable to implement JMS using ApacheMQ无法使用 ApacheMQ 实现 JMS
【发布时间】:2012-03-24 01:40:16
【问题描述】:

我正在尝试使用 ApacheMQ 在 Eclipse 中实现一个简单的 JMS(传统的不使用弹簧)代码。

我已经从apache.org 下载了ApacheMQ,从SimpleQueueSender 下载了示例JMS 发送方,从SimpleQueueReceiver 下载了接收方。

现在我应该如何执行这段代码?我已经阅读了所有相关教程,但找不到这些问题的答案。

请提出解决方案

  1. activemq 启动后的类路径,设置如下所示

信息 |码头-7.1.6.v20100715 信息 | ActiveMQ WebConsole 已初始化。 信息 |初始化 Spring FrameworkServlet 'dispatcher' 信息 | ActiveMQ 控制台http://0.0.0.0:8161/admin 信息 | ActiveMQ Web 演示,http://0.0.0.0:8161/demo 信息 | http://0.0.0.0:8161/fileserver 的 RESTful 文件访问应用程序 信息 |已启动 SelectChannelConnector@0.0.0.0:8161

下一步怎么做?

2.是否应该将此服务器添加到eclipse中作为新服务器,然后在该服务器上运行程序?

3.这些程序可以从eclipse运行还是应该从单独的控制台执行?

【问题讨论】:

    标签: java jms activemq


    【解决方案1】:

    为确保您已包含 ActiveMQ 所需的所有 jar,请在 eclipse 项目的构建路径中包含默认的 activemq-all.jar

    ActiveMQ 可以独立于您的 eclipse 环境启动。

    回答你的问题:-

    (1) 在您的 JMS 应用程序中使用以下属性

    java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
    java.naming.provider.url = tcp://localhost:61616
    

    您可以使用 IP 地址或 127.0.0.1 代替 localhost

    (2)eclipse中无需添加mq server(broker)。

    (3) 一个简单的 jms 客户端可以从 eclipse 运行菜单中运行,前提是您已经适当地设置了 Java 构建路径。

    【讨论】:

    • 谢谢,但我认为我在更多的 jars 上缺少上述两行添加时显示 java.naming 无法解析的错误..:( 以及“java.naming.factory.initial”的 RHS “。请帮助我现在缺少什么?
    • 尝试使用一些服务器运行时库(如 JBoss ...)作为项目的一部分。这将具有命名所需的所有库
    • 感谢它在 activemq-all-5.4.1 上运行良好,但在 activemq-all-5.5.1 上不行。它一直在工作,直到连接建立,但使用以后的 jar 创建会话失败。应该有使用 5.5.1 时还包括其他罐子吗?请帮助:(
    【解决方案2】:

    在下载 ActiveMQ 时。您会发现每个操作系统(windows、Linux、Mac)的不同服务器(Message Broker)。如果您使用 Window,则转到 Window OS 的启动服务器。当 ActiveMQ 消息代理正在运行时,您可以打开 url http://localhost:8161/admin 进行管理,http://localhost:8161/demo 进行演示。

    您可以在 webapp 文件夹下找到这些 java 演示。

    我使用 ActiveMQ 将 JMS 与 spring 一起工作。因此,如果您想创建示例 JMS 应用程序,那么 Spring In Action 3.0 是最好的书。

    您无需在 Eclipse 中添加 Message Broker(Server),只需在外部运行即可。并且请将 brokerUrl 指定为“tcp://localhost:61616”并定义您实现的目标主题或目标队列。

    【讨论】:

    • 谢谢,但您能帮我理解使用带弹簧和不带弹簧的 JMS 的区别吗?使用带有 spring 的 JMS 的接收者是否能够从没有使用 spring 的实现 JMS 的发送者那里接收消息,反之亦然?还是会有任何其他问题?
    • 实际上spring是建立在java JMS之上的。 Spring 提供 jmsTemplate ,您可以将其用作发送方和接收方。您可以使用 jmsTemplate 发送或接收消息。无论消息来自弹簧还是没有弹簧,您都可以使用 jmsTemplate 接收消息。但主题或队列的目的地必须相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 2016-02-24
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多