【问题标题】:Glassfish JMS queue with HornetQ: Store locally and Forward remotelyGlassfish JMS 队列与 HornetQ:本地存储和远程转发
【发布时间】:2014-04-22 06:57:22
【问题描述】:

对于以下场景,我需要一些精确的步骤(参考 glassfish 文档);

  • 如何创建 JMS 队列以支持“本地存储和远程转发”。远程系统是 HornetQ。
  • 远程连接应支持 SSL 和用户/密码身份验证
  • 应该支持自动重试和重试次数的配置。
  • 万一出现故障,应该可以选择jms消息批量重发

我已经浏览了一些 glassfish 文档,但需要专家进一步验证。

简单的场景,但仍然无法工作“发送 JMS 到 sourceQueue 和 JMS 桥接服务以传输到 targetQueue”。以下是配置;

A. domain.xml(提取)

<jms-service default-jms-host="default_JMS_host" type="EMBEDDED">
    <jms-host host="localhost" name="default_JMS_host" lazy-init="false">
      <property name="imq.bridge.bridge1.type" value="jms"></property>
      <property name="imq.bridge.bridge1.xmlurl" value="file:///C:/TEMP/bridge.xml"></property>
      <property name="imq.bridge.bridge1.autostart" value="true"></property>
      <property name="imq.bridge.bridge1.logfile.limit" value="0"></property>
      <property name="imq.bridge.bridge1.logfile.count" value="1"></property>
      <property name="imq.bridge.enabled" value="true"></property>
      <property name="imq.bridge.admin.user" value="admin"></property>
      <property name="imq.bridge.admin.password" value="admin"></property>
      <property name="imq.bridge.activelist" value="bridge1"></property>
    </jms-host>
</jms-service>

B. bridge.xml(网桥配置)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jmsbridge SYSTEM "sun_jmsbridge_1_0.dtd">
<jmsbridge name="bridge1">
    <link name="link1">
        <enabled ="true"></enabled>
           <source connection-factory-ref=”jms/__defaultConnectionFactory" destination-ref="sourceQueue"></source>
     <target connection-factory-ref="jms/__defaultConnectionFactory" destination-ref="targetQueue "></target>
    </link>
    <connection-factory ref-name="jms/__defaultConnectionFactory"/>
    <connection-factory ref-name="jms/__defaultConnectionFactory"/>
    <destination ref-name="sourceQueue" type="queue" lookup-name="sourceQueue"/>
    <destination ref-name="targetQueue" type="queue" lookup-name="targetQueue"/>
</jmsbridge>

【问题讨论】:

    标签: glassfish jms hornetq


    【解决方案1】:

    Glassfish 部署 Glassfish JMS 服务器。如果您想与 HornetQ 对话,您需要使用 HornetQ 库并使用适当的 API(核心或 JMS)与 HornetQ 服务器对话。

    如果您需要通过 MDB 进行 XA 集成,那么您将需要部署资源适配器并进行适当的恢复集成。看看 glassFish 如何部署外部资源适配器。但这是 RedHat 还没有人测试过的领域,并且考虑到 glassFish 的停产状态,我怀疑这会很快发生。

    您可以做的另一种方法是在 JBoss/HornetQ 中部署 JMS 桥,在 GlassFish JMS 上发送的任何消息都将通过桥接过程在 HornetQ 上使用。

    【讨论】:

    • 谢谢;您或论坛中的某个人是否在 Glassfish 中创建了任何成功的 JMS Bridge 示例?如果是,请与 XML JM Bridge 文件一起共享配置文件?
    • 这是一个非常标准的东西。看看我们的 JMS Bridge 示例。你只需要 glassfish 库.. 你在 jboss 方面做。看来我已经回答了你的问题。如果你能接受,我将不胜感激。
    • 嗨 Clebert,是的,它非常标准我想知道为什么 JMS Bridge 不工作。我创建了一个最简单的场景;发送 msg 到 sourceQueue,JMS Bridge 将消息传输到 targetQueue。所有本地都在 MQ + Glassfish 中。我在原始消息中嵌入了 domain.xml 和 bridge.xml。如果我错过了这个基本和标准配置的一些东西,你能不能看看并提出建议。此外,我在 JMS 桥接服务上收到错误“在代理上执行此操作时出错。[B2215]:桥接服务管理器未运行
    • 您应该在 HornetQ 上打开一个用户论坛,以便我们查看您做错了什么。从 StackOverFlow 的 POV 中,问题得到了解答,我无法在此处查看配置。SOF 不是对话的场所。等等。如果您打开带有一些配置帖子的用户论坛,我们可以为您提供帮助。 community.jboss.org/en/hornetq?view=discussions
    猜你喜欢
    • 1970-01-01
    • 2015-12-03
    • 2014-10-20
    • 2010-12-26
    • 2011-12-24
    • 1970-01-01
    • 2012-07-28
    • 2014-10-27
    • 1970-01-01
    相关资源
    最近更新 更多