gpt4 book ai didi

java - 远程访问 OpenMQ

转载 作者:行者123 更新时间:2023-11-30 09:48:33 26 4
gpt4 key购买 nike

我在本地安装了 openMQ,它运行良好。我使用以下代码通过 JNDI 查找获取 QueueConnectionFactory

Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.fscontext.RefFSContextFactory");
env.put(Context.PROVIDER_URL, "file:///C:/objectstore");
Context ctx = new InitialContext(env);
QueueConnectionFactory myFactory = (QueueConnectionFactory) ctx.lookup("MyQueueConnection");

上面的代码返回了连接工厂,我也可以从那里访问 replyQueuerequestQueue

这是我设置队列的方式

imqobjmgr add -l "MyQueueConnection"" -j "java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContext
Factory" -j "java.naming.provider.url=file:///C://objectstore" -t qf -o "imqAddressList=mq://localhost:7676/jms"

imqobjmgr add -l "cn=DEVL.REQUEST" -j "java.naming.factory.initial=com.sun.jndi.fscontext.RefFSCon
textFactory" -j "java.naming.provider.url=file:///C://objectstore" -t q -o "imqDestinationName=requestQueue"

imqobjmgr add -l "cn=DEVL.REPLY" -j "java.naming.factory.initial=com.sun.jndi.fscontext.RefFSConte
xtFactory" -j "java.naming.provider.url=file:///C://objectstore" -t q -o "imqDestinationName=replyQueue"

我的问题是:

  1. 如何在 Linux 上设置 openMQ服务器,以便我可以访问 openMQ来自不同的服务器代码将在 tomcat 中运行apache 服务器(也是一个 linux box)。

  2. 我必须做出哪些改变获取
    的代码QueueConnectionFactory 来自 openMQ
    坐在不同的服务器上?

我没有在 GlassFish 中运行 openMQ,而是在其自身 (imqbrokerd.exe) 上运行 openMQ。

最佳答案

在我所有的挖掘中,我没有发现任何迹象表明 OpenMQ 在单独使用时提供 JNDI 提供程序。它看起来像是 GlassFish 提供的。这意味着您需要使用 LDAP 之类的东西作为对象存储,我还没有这样做。

目前,我通过将 .binding 文件(在您的情况下位于 c:\objectstore 中的文件)复制到 JMeter 可以看到的文件系统来“作弊”,以便我可以引用它。只要您使用实际的机器名称或 IP,而不是 localhost 就可以,但显然不会将其用于生产。

在 Java 方面,您可以完全放弃 JNDI,直接实例化 com.sun.messaging.ConnectionFactory。我使用 Spring 来注入(inject)连接工厂。请注意,我必须包括我自己的一个非常简单的 OpenMQConnectionFactoryFactory(从 https://wikis.oracle.com/display/GlassFish/OpenMQSpringConnectionConsumer 中窃取),因为 com.sun.messaging.ConnectionFactory 不是一个 bean。

<bean id="connectionfactoryfactory"
class="myownlibrary.messaging.factory.OpenMQConnectionFactoryFactory">
<property name="properties">
<props>
<prop key="imqAddressList">qa29-vm:7676</prop>
<prop key="imqAddressList">qa30-vm:7676</prop>
<prop key="imqReconnectAttempts">-1</prop>
</props>
</property>
</bean>

<bean id="connectionfactory"
factory-bean="connectionfactoryfactory"
factory-method="constructConnectionFactory"/>

<bean id="jmsFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory" ref="connectionfactory" />
</bean>

关于java - 远程访问 OpenMQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6171457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com