我使用WSO2Esb和WSO2DSS在数据库中插入读数,我的插入工作很好,当我从移动端获得请求读数时,我需要200和唯一值的响应,有时插入后连接失败意味着插入结束,但客户端没有得到响应,在这种情况下,移动端客户端再次发送请求,所以我的代理再次将此请求发送到数据库,所以我的数据库每2或3次读数存储重复的值,这对客户端完全不公平,因为我找到了一个使用幂等服务的小解决方案,我们可以找到解决方案吗这个
<!-- The example shows WSO2 ESB acting as an Idempotent Receiver -->
<definitions xmlns="http://ws.apache.org/ns/synapse">
<proxy name="IdempotencyReceivingProxy">
<target>
<inSequence>
<log level="full"/>
<!-- Store all messages in an Jmsmemory message store -->
<store messageStore="MyStore"/>
</inSequence>
<outSequence>
<send/>
</outSequence>
</target>
</proxy>
<!-- Further mediation of messages are done in this sequence -->
<sequence name="next_seq">
<send>
<endpoint>
<address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
</endpoint>
</send>
</sequence>
<messageStore name="MyStore"/>
<!-- Resequencing Processor takes the next sequence number and hand over to "next_seq" and preserve Idempotency -->
<messageProcessor
class="org.apache.synapse.message.processors.resequence.ResequencingProcessor"
name="ResequencingProcessor" messageStore="MyStore">
<parameter name="interval">2000</parameter>
<!-- Takes the sequence number using Xpath -->
<parameter name="seqNumXpath" xmlns:m0="http://services.samples" expression="substring-after(//m0:placeOrder/m0:order/m0:symbol,'-')"/>
<parameter name="nextEsbSequence">next_seq</parameter>
<parameter name="deleteDuplicateMessages">true</parameter>
</messageProcessor>
</definitions>
为此,我使用了以下链接http://docs.wso2.org/wiki/display/integrationpatterns/idempotent+receiver它适合我的需求吗
我认为这不符合你的要求。重排序处理器所做的是,根据seqnumxpath
属性中的数字对消息进行排序。因此,消息应该包括一个数字,您应该使用xpath表达式获得这个数字。当DeletedUpricateMessages
参数设置为true时,它将删除序列号与从seqnumxpath
参数获得的序列号相同的重复消息。
在您的情况下,可以使用存储和转发方案来防止客户端发送多个请求。在代理服务中将force_sc_accepted
属性设置为true,以便始终向客户端返回202响应。然后,消息将被存储在msg存储,并将被转发使用消息处理器。
http://docs.wso2.org/wiki/display/esb470/store+和+forward+使用+JMS+message+storeshttp://wso2.com/library/articles/2011/10/implementing-store-forward-messaging-patterns-wso2esb-part-1
因此,我使用Spring integration链接JMS和ActiveMQ,如下所示:- 如何使其工作,以便发送到此队列并从中接收消息?请帮忙。
我们面临着ActiveMQ及其消费者的随机问题。我们观察到,很少有消费者不接收消息,即使他们连接到ActiveMQ队列。但在消费者重启后,它工作正常。 我们在ActiveMQ端有一个名为testQueue的队列。消费者正试图将消息从该队列中解列。为此,我们正在使用Spring的DefaultMessageListenerContainer。消息正在从ActiveMQ代理传递到使用者节点。从tcpd
我的代码中有一个Spring JmsListener。它接收和消费消息2天,但突然在这2天后,它没有收到来自外部Activemq的消息。然而,它的队列中有一些挂起的消息。当我重置Activemq和消费者时,消费者会收到大量消息。当消息挂起时,连接到Activemq的消费者(代表Spring致动器日志)。日志和配置显示Activemq没有将消息推送给消费者。我有另一个像这个消费者一样的服务从其他队列
如果我创建上面的类并尝试在tomcat7上部署war,我会看到以下错误。
我正在开发一个使用JMS作为消息传递层的应用程序。我还使用glassfish来托管jms/mq后端。该应用程序能够使用我最初设置的glassfish 3.1服务器中的连接工厂和主题进行发布/订阅消息传递。我现在有了glassfish (4.1)的另一个实例,它托管了一组新的应用程序使用的新功能,但是我仍然需要使用第一个glassfish服务器广播的消息。事实上,客户端使用特定于glassfish