[英]client for remote JMS queue
我在远程glassfish服务器上配置了JMS队列。 我正在尝试从本地计算机连接此队列。 是否可以直接连接到此服务器,或者我需要通过某个代理/代理连接? 它是如何工作的? (我在jms地区很新鲜)非常感谢
如果您的客户端应用程序在Glassfish外部运行,则这是一个开放式mq客户端的简单代码示例。
要使其工作,您需要从glassfishInstall / mq / lib目录中引用2个openmq jar - imq.jar和jms.jar
import com.sun.messaging.ConnectionConfiguration;
import com.sun.messaging.ConnectionFactory;
import com.sun.messaging.Queue;
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;
public class TestJmsClientStandalone2 {
public static void main( String[] args ) throws JMSException
{
ConnectionFactory connFactory = new ConnectionFactory();
connFactory.setProperty(ConnectionConfiguration.imqAddressList, "remotehostip:7676");
Queue myQueue = new Queue("myRemoteQueue");
try (Connection connection = connFactory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = session.createProducer(myQueue)) {
Message message = session.createTextMessage("this is my test message");
producer.send(message);
}
}
}
您的客户端应用程序是否在本地glassfish实例中运行并尝试连接到远程glassfish实例的JMS资源?
如果是,那么我找到了两种方法来做到这一点。 对于这两个选项,在远程和本地glassfish实例中设置相同的连接工厂和目标(队列)JMS资源。
1)设置jms连接工厂属性“addressList”
在客户端glassfish管理控制台中转到Resources->JMS Resources->Connection Factories->jms/YourConnectionFactory->Additional Properties
添加名为addressList和值XX.XX.XX.XX:YYYY的其他属性,其中值是远程计算机的IP地址和运行JMS服务的端口号。
要么
2)将客户端glassfish Java消息服务设置为连接到远程glassfish
在客户端glassfish管理控制台中,转到Configurations->server-config->Java Message Service
Hosts->default_JMS_host
IP地址和端口设置为远程glassfish JMS服务的IP地址和端口 我已经测试了两种与Glassfish 4一起使用的选项。希望它有所帮助。
我没有使用Glassfish的经验,但是这个场景适用于JBoss(它集成了JBossMQ),它通常也适用:
服务器:
客户:
InitialContext
的属性中 至于JBoss,它看起来像这样:
final Properties initialContextProperties = new Properties();
initialContextProperties.put("java.naming.factory.initial",
"org.jnp.interfaces.NamingContextFactory");
initialContextProperties.put("java.naming.provider.url",
"jnp://localhost:1099");
//
final InitialContext ic = new InitialContext(initialContextProperties);
final QueueConnectionFactory qcf = (QueueConnectionFactory) ic
.lookup("XAConnectionFactory");
final Queue queue = (Queue) ic.lookup("queue/A");
因此经纪人/代理商是JNDI。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.