Java JMS客户端会话使用
我正试图利用.NET Kaazing客户端通过web套接字与JMS后端交互。我正在努力理解会话的正确用法。最初,我在所有线程中共享一个会话,但我注意到这是: 会话对象是用于生成和使用消息的单线程上下文。尽管它可以在Java虚拟机(JVM)之外分配提供者资源,但它被认为是一个轻量级JMS对象 我只参加一次会议的原因是因为我认为这样会产生更好的表现。由于文档声称会话是轻量级的,所以我毫不犹豫地将代码切换到每个“操作”使用一个会话。“操作”是指发送单个消息,或订阅队列/主题。在前一种情况下,会话是短暂的,在消息发送后立即关闭。在后一种情况下,只要订阅处于活动状态,会话就需要持续 当我尝试创建多个会话时,出现了一个错误:Java JMS客户端会话使用,java,.net,jms,websocket,kaazing,Java,.net,Jms,Websocket,Kaazing,我正试图利用.NET Kaazing客户端通过web套接字与JMS后端交互。我正在努力理解会话的正确用法。最初,我在所有线程中共享一个会话,但我注意到这是: 会话对象是用于生成和使用消息的单线程上下文。尽管它可以在Java虚拟机(JVM)之外分配提供者资源,但它被认为是一个轻量级JMS对象 我只参加一次会议的原因是因为我认为这样会产生更好的表现。由于文档声称会话是轻量级的,所以我毫不犹豫地将代码切换到每个“操作”使用一个会话。“操作”是指发送单个消息,或订阅队列/主题。在前一种情况下,会话是短暂
System.NotSupportedException: Only one non-transacted session can be active at a time
谷歌搜索这个错误是徒劳的,所以我尝试切换到事务会话。但在尝试创建消费者时,我会遇到另一个错误:
System.NotSupportedException: This operation is not supported in transacted sessions
看来我被困在岩石和坚硬的地方之间了。我看到的唯一可能的选择是跨线程共享我的会话,或者使用一个非事务性会话来创建使用者,以及为其他一切创建多个事务性会话。对我来说,这两种方法似乎都有点格格不入
谁能告诉我在客户端处理会话的正确方法吗?有几种方法可以向应用程序添加并发性。您可以使用多个连接,但由于网络开销的增加,这可能是不可取的。更好的方法是通过调度任务或通过ConcurrentQueues传递消息,实现一种简单的机制来处理消息侦听器中的并发性。以下是实施策略的一些选择:
对于更高性能的应用程序,您应该考虑方法2和3。
< P>有几种方法可以向应用程序添加并发。您可以使用多个连接,但由于网络开销的增加,这可能是不可取的。更好的方法是通过调度任务或通过ConcurrentQueues传递消息,实现一种简单的机制来处理消息侦听器中的并发性。以下是实施策略的一些选择:对于更高性能的应用程序,您应该考虑方法2和3。
谢谢您的回答,但您没有真正解决我的问题。我不了解何时以及如何创建会话-并发处理