标签: jms

长期存在的JMS会话.保持JMS连接/ JMS会话总是打开一个坏习惯吗?

保持JMS连接/会话/消费者总是打开一个坏习惯吗?

代码草案示例:

// app startup code

ConnectionFactory cf = (ConnectionFactory)jndiContext.lookup(CF_JNDI_NAME);
Connection connection = cf.createConnection(user,pass);
Session session = connection.createSession(true,Session.TRANSACTIONAL);
MessageConsumer consumer = session.createConsumer(new Queue(queueName));
consumer.setMessageListener(new MyListener()); 
connection.start();
connection.setExceptionListener(new MyExceptionHandler()); // handle connection error


// ... Message are processed on MyListener asynchronously ...


// app shutdown code

consumer.close();
session.close();
connection.close();
Run Code Online (Sandbox Code Playgroud)

有什么建议可以改善这种JMS使用模式吗?

java jms

10
推荐指数
3
解决办法
1万
查看次数

如何在本地使用activemq?

我无法理解如何在本地使用ActiveMQ.
假设我有2台机器,需要交换一些消息.
在机器上我启动ActiveMQ代理:

> ~/bin/activemq
Run Code Online (Sandbox Code Playgroud)

并使用类似的东西:

    javax.naming.Context ctx = new InitialContext();

    TopicConnectionFactory factory = (TopicConnectionFactory)ctx.lookup("connectionFactory");
    conn = factory.createTopicConnection();

    TopicSession session = conn.createTopicSession(false,TopicSession.AUTO_ACKNOWLEDGE);
    Topic topic = null;
    try{
        topic = (Topic)ctx.lookup("MyTopic");
        System.out.println("MyTopic was found");
    }catch(NameNotFoundException nnfe){
        topic = session.createTopic("MyTopic");
        System.out.println("MyTopic was created");
    }
    TextMessage textMessage = session.createTextMessage();
    TopicPublisher publisher = session.createPublisher(topic);
    conn.start();

    textMessage.setText("My topic message number");
    publisher.publish(textMessage);
    System.out.println("sendMessage2topic");
Run Code Online (Sandbox Code Playgroud)

我在jndi.properties中的位置:

java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
java.naming.provider.url = tcp://localhost:61616
Run Code Online (Sandbox Code Playgroud)

但是我应该在另一台机器上创建什么来订阅这个主题?Shoul我在第二台机器上创建第二个本地ActiveMQ代理,以及如何订阅第一台机器上的远程主题???

java activemq-classic jms

10
推荐指数
2
解决办法
1万
查看次数

JMS和JMX教程?

我正在准备面试,这需要JMS和JMX,但我没有在这些方面工作.所以需要任何视频教程链接,这可以让我快速了解.谢谢.

java jmx jms

10
推荐指数
1
解决办法
1万
查看次数

何时选择基于UDP套接字API的JMS API,反之亦然?

是什么原因可以激励程序员在分布式Java应用程序中使用Java JMS(Java消息服务)API而不是java.net包的UDP套接字API,或者使用UDP套接字API代替JMS API?如果可能,请举例说明.

java sockets udp jms

10
推荐指数
1
解决办法
2750
查看次数

Arjuna JTA交易出乎意料地回滚

当我检查JBoss日志时,我发现了很多这些错误

2012-03-29 12:01:27,358 WARN  @ [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] Could not find new XAResource to use for recovering non-serializable XAResource < 131075, 32, 30, 1--53e2af7c:eff6:4ec11bf7:2e1da4-53e2af7c:eff6:4ec11bf7:2e263d                                                                   >
2012-03-29 12:01:27,398 WARN  @ [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] Could not find new XAResource to use for recovering non-serializable XAResource < 131075, 31, 29, 1--53e2af7c:d397:4e8c1b0e:25b6d-53e2af7c:d397:4e8c1b0e:29d09                                                                     >
Run Code Online (Sandbox Code Playgroud)

然后,当我尝试发送JMS消息时,我看到了这个错误:

2012-03-29 12:02:43,778 WARN  @ [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.resources.arjunacore.opcerror] [com.arjuna.ats.internal.jta.resources.arjunacore.opcerror] XAResourceRecord.commit_one_phase caught: java.lang.IllegalMonitorStateException
2012-03-29 12:02:43,778 WARN  @ [org.springframework.jms.listener.DefaultMessageListenerContainer] Setup of JMS message listener invoker failed for destination 'queue/request' - trying to recover. Cause: …
Run Code Online (Sandbox Code Playgroud)

java jboss transactions jms

10
推荐指数
1
解决办法
1万
查看次数

哪一个可以从STOMP/AMQP中选择?

我使用node.js作为jms主题的客户端.有两个协议可用于在主题上建立连接.论文是Stomp和AMQP.我在http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocolhttp://en.wikipedia.org/wiki/Streaming_Text_Oriented_Messaging_Protocol上阅读了有关它们的简要介绍.两者似乎都是线路级协议,即通过网络作为八位字节流发送的数据.我没有找到任何应​​该首选的具体原因.如果有人可以阐明它,那将会很有帮助.

另一点是协议引以为豪的是说它们是可互换的.可互操作的术语是否意味着如果有人想要取消特定的消息代理实现,请说apache active MQ而不是想要插入Websphere MQ,转换将是顺利的(前提是支持AMQP/STOMP或任何其他线路levl协议)?

jms stomp amqp node.js

10
推荐指数
1
解决办法
6903
查看次数

JMS选择器如何根据队列深度进行扩展?

在消耗来自队列的消息时,相对于队列深度n,应用JMS选择器的算法时间复杂度是多少?特别是,每次读取是否为线性(O(n))?它是依赖于实现的(在JMS提供程序上),是否取决于请求的字段?

(如果依赖于实现,我对Websphere MQ和Solace的行为特别感兴趣,但我欢迎处理任何特定JMS提供程序的答案,特别是如果您有描述复杂性的文档的链接!).

动机:每条消息都有两个属性:a invocationID和a batchName.批处理包含多个调用.客户希望以两种方式之一消费消息; 无论是通过invocationID还是通过batchName.在生成消息时,我不知道它们将被消耗的方法. 

这可以通过选择器实现:

invocationID=42
Run Code Online (Sandbox Code Playgroud)

要么

batchName="reconciliation"
Run Code Online (Sandbox Code Playgroud)

...我可以通过使用相关ID而不是自定义属性来加快其中一个,但我担心另一个会保持缓慢.

java jms ibm-mq

10
推荐指数
1
解决办法
2684
查看次数

如何更改Activemq的默认端口号

我正在使用Windows 7OS.我apache-activemq-5.8.0.zip从这些链接下载并在C:\Users\Infratab Bangalore\Desktop\Queueing\apache-activemq-5.8.0目录中解压缩.

Activemq初始化时,我Pre-Installation Requirements从这些链中读取概念.

我已经安装apache-maven-3.0.5在我的系统中.对于我的构造,我在我的系统中运行以下命令.

   mvn -version
Run Code Online (Sandbox Code Playgroud)

我收到以下消息,所以Maven安装成功.

 Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 19:21:
 28+0530)
 Maven home: P:\Software\apache-maven-3.0.5
 Java version: 1.7.0_21, vendor: Oracle Corporation
 Java home: C:\Program Files\Java\jdk1.7.0_21\jre
 Default locale: en_US, platform encoding: Cp1252
 OS name: "windows 7", version: "6.1", arch: "x86", family: "windows" 
Run Code Online (Sandbox Code Playgroud)

geronimo-spec-corba-1.0.jar从这些链接下载并设置classpth.

在此输入图像描述

Activemq以下面的方式开始初始化.

  C:\Users\Infratab Bangalore\Desktop\Queueing\apache-activemq-5.8.0\bin>activemq
Run Code Online (Sandbox Code Playgroud)

我收到错误,所以我测试了是否61616(Activemq default port no) …

java apache activemq-classic jms java-ee-7

10
推荐指数
1
解决办法
3万
查看次数

Web Socket与JMS或Activemq

我想知道Java Web套接字和JMS(或ActiveMq)之间有什么区别?请让我知道或有任何来源与WebSocket和JMS的比较以及在哪里使用websocket而不是在哪里使用Activemq而不是websocket请.Activemq是JMS的一个实现.Activemq可能使用Web套接字.如果使用Web套接字来传输消息(包含任何类型的数据)而不是Activemq会怎么样?这可能取决于应用程序和要求的类型,如何一般,并让我轻松地决定使用什么,让我有你的想法(我想在两个Web应用程序之间发送消息,简单,快速和轻量级) .

投票给关闭的人:请考虑帮助,至少让一些人得到帮助,知识而不是避免它.

java activemq-classic jms java-ee websocket

10
推荐指数
1
解决办法
7496
查看次数

可查询的可序列化类:在ActiveMQ中查看消息时出现java.lang.ClassNotFoundException

我希望看到已在ActiveMQ队列中排队的消息内容.我打开了web-console.(http:// localhost:8161/admin/queues.jsp)并点击了队列消息的message-id.它在"消息详细信息"窗口中给出了以下错误,而不是给出消息内容.

"javax.jms.JMSException:无法从内容构建正文.可序列化的类不可用于代理.原因:java.lang.ClassNotFoundException:"

这个异常的原因是什么?我需要做些什么来摆脱这个?

java activemq-classic jms classnotfoundexception

10
推荐指数
2
解决办法
5714
查看次数