美好的一天
我还想问一些帮助/澄清,因为我是实施JMS的新手,我已经去过以下链接
从连接到jboss-as7 hornetq的客户端“无法创建会话工厂” [HORNETQ-952]当绑定AS到0.0.0.0远程HornetQ客户端失败时 - JBoss Issue Tracker https://issues.jboss.org/browse/JBPAPP-9393
请问您如何在 JBOss 7.1.1.Final 上进行JMS队列远程处理? 我在我的连接中使用RemoteConnectionFactory 我是否需要将我的远程(172.45.45.45)jboss服务器绑定到特定的IP地址才能远程连接到它?就像在启动jboss时传递-b IPAddress一样? 或像这样在standalone.conf上配置它 在远程IP /jboss/bin/standalone.conf中(我真的需要这个吗?)
# set this value so we can send JMS messages from remote clients
JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=172.45.45.45”
这是我想在我的本地笔记本电脑上向我的队列发送JMS消息的场景,我有一个我的队列发布者和172.45.45.45(远程IP)web.war()部署在该远程IP和我将我的消费者配置为此队列
<jms-queue name=“testqueue">
<entry name="java:jboss/queue/mss/testqueue"/>
<durable>true</durable>
</jms-queue>
我已将Jboss应用程序用户配置为guest角色 我在standalone.xml中有我的队列配置(standalone-full.xml的副本) 我有我的JMS发布者/消费者
如果我在下面有以下配置,远程发送JMS消息工作正常。没有它我得到一个错误= 2无法连接到服务器
我的本地etc / hosts配置该IP(我真的需要这个吗?) 在此处输入代码 172.45.45.45 ip-172-45-45-45.ec2.internal
远程Jboss服务器配置 在远程IP /jboss/bin/standalone.conf中(我真的需要这个吗?)
#set this value so we can send JMS messages from remote clients
JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=172.45.45.45”
在没有以下配置的情况下,需要有关远程实现JMS队列的帮助 我的本地etc / hosts配置该IP(我真的需要这个吗?) 172.45.45.45 ip-172-45-45-45.ec2.internal
远程Jboss服务器配置 在远程IP /jboss/bin/standalone.conf中(我真的需要这个吗?)
#set this value so we can send JMS messages from remote clients
JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=172.45.45.45”
以下是我的JMS发布商的代码段
private static String username = "testuser";
private static String password = "testpass";
private static String host = "remote://172.45.45.45:4447";
Properties jndiProps = new Properties();
try {
jndiProps.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
jndiProps.put(Context.PROVIDER_URL, host);
jndiProps.put(Context.SECURITY_PRINCIPAL, username);
jndiProps.put(Context.SECURITY_CREDENTIALS, password);
Context context = new InitialContext(jndiProps);
ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("jms/RemoteConnectionFactory");
connection = connectionFactory.createConnection(username, password);
topic = (Topic) context.lookup("jms/topic/testTopic");
System.out.println("Connected to JMS");
connection.start();
来自我的消费者的示例代码段
/**
* Message-Driven Bean implementation class for: MDBSample- This is for Consume the Queue
*/
@MessageDriven(activationConfig = {@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "java:/queue/test"),
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge")})
public class MessageConsumer implements MessageListener {
/**
* Default constructor.
*/
public MessageConsumer() {
}
/**
* @see MessageListener#onMessage(Message)
*/
public void onMessage(Message message) {
try {
ObjectMessage msg = (ObjectMessage) message;
JMSMessage jmsMessage = (JMSMessage) msg.getObject();
System.out.println("Received message is ==========> " + jmsMessage.getAction());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
任何想法或建议?