Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JMS持久异步事件通知_Java_Spring_Events_Jms - Fatal编程技术网

Java JMS持久异步事件通知

Java JMS持久异步事件通知,java,spring,events,jms,Java,Spring,Events,Jms,我希望有人能为我指出一些要求的正确方向: 我们需要通过服务器发送异步可靠通知 消息的使用者将随意订阅/取消订阅 消费者将是众多的 制片人就是其中之一 即使服务器关闭,通知也不会丢失,并且如果服务器再次启动,也会发送通知。 通知的数量预计会很高 使用的线程数应尽可能少 鉴于上述(疯狂的)需求,我尝试使用activemq/jms解决这个问题。这似乎是正确的方向吗 鉴于上述情况: 1.我使用了持久订阅者、jms消息和kahadb。 2对于jms producer,解决方案似乎很简单。 3.在消费者方面

我希望有人能为我指出一些要求的正确方向: 我们需要通过服务器发送异步可靠通知 消息的使用者将随意订阅/取消订阅 消费者将是众多的 制片人就是其中之一 即使服务器关闭,通知也不会丢失,并且如果服务器再次启动,也会发送通知。 通知的数量预计会很高 使用的线程数应尽可能少

鉴于上述(疯狂的)需求,我尝试使用activemq/jms解决这个问题。这似乎是正确的方向吗

鉴于上述情况: 1.我使用了持久订阅者、jms消息和kahadb。 2对于jms producer,解决方案似乎很简单。 3.在消费者方面,我遇到了麻烦

a。虽然我有spring,但我不能使用jms:listener容器,因为我需要动态订阅和取消订阅消费者,这似乎是不可能的,所以我为我拥有的每个侦听器创建了一个SimpleListenerContainer。这听起来不错吧? B在SimpleListenerContainer中,我设置了clientId(因为这是持久性存储所需要的)

在这里,我有以下几点。给定以下配置:

    <bean id="messageBusReceiverConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
        <property name="maxConnections" value="10"/>
        <property name="maximumActive" value="500"/>
        <property name="connectionFactory" ref="jmsConnectionFactory"/>
        <property name="idleTimeout" value="0"/>
    </bean>
其中容器是SimpleMessageListenerContainer。容器。销毁();调用时抛出一些异常。是否需要调用它或停止方法就足够了


好的,我知道这些问题是任意的,甚至对于了解jms(如果jms是正确的解决方案)并且从我的代码中几乎什么都没有给出的人来说,也很难回答。我希望有人能给我一些指导,告诉我我是否在正确的轨道上,在提出的问题上尽可能多地向我提供输入,然后我可以在需要的地方提供代码,以解决我剩余的问题。

我缺乏关于spring的知识来回答你关于非法状态例外的问题,虽然我猜这与maxConnections设置为10有关

你需要春天吗?在任何情况下,确保在JMS代理的配置中启用了持久性,确保使用持久队列/主题,并确保在消息上使用
setDurable(true)


我认为,如果您想要可靠的消息传递,您通常会做出正确的决定,使用功能强大的JMS提供程序。您可以使用SPECjms2007基准测试各种产品,这取决于性能对您的重要性,还有一些可用的。

我缺乏关于spring的知识来回答您关于IllegalStateException的问题,尽管我猜它与maxConnections设置为10有关

你需要春天吗?在任何情况下,确保在JMS代理的配置中启用了持久性,确保使用持久队列/主题,并确保在消息上使用
setDurable(true)


我认为,如果您想要可靠的消息传递,您通常会做出正确的决定,使用功能强大的JMS提供程序。您可以使用SPECjms2007基准测试各种产品,这取决于性能对您的重要性,还有一些可用的。

复杂的问题?太宽泛了,一个帖子回答不了?愚蠢的问题?我不太习惯从堆栈溢出有一个回答了这么多时间的问题。我已经像上面提到的JMS那样做了,所以我想这个问题不再是紧急的或者我这边的问题了。但是如果有人希望得到一些关于我是如何做到这一点的支持,请让我知道,我可以分享一些信息。我不确定我是否遵循了最佳方法。这个问题解决了吗?复杂的问题?太宽泛了,一个帖子回答不了?愚蠢的问题?我不太习惯从堆栈溢出有一个回答了这么多时间的问题。我已经像上面提到的JMS那样做了,所以我想这个问题不再是紧急的或者我这边的问题了。但是如果有人希望得到一些关于我是如何做到这一点的支持,请让我知道,我可以分享一些信息。但我不确定我是否遵循了最佳方法。这个问题解决了吗?
    <bean id="messageBusReceiverConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
        <property name="maxConnections" value="10"/>
        <property name="maximumActive" value="500"/>
        <property name="connectionFactory" ref="jmsConnectionFactory"/>
        <property name="idleTimeout" value="0"/>
    </bean>
container.stop();
container.destroy();