1

我正在尝试发送payload到 gemfire 缓存。我将其payload作为 MQ 消息接收。如果 myoutbound adapter是另一个Queue.

但是,当出站通道是 Gemfire 的出站适配器时,它会引发异常。下面是代码片段。

非常感谢这里的帮助。因为我是 Gemfire + Spring IO 的新手

<jms:message-driven-channel-adapter id="wMQ_in_channelAdapter" 
       concurrent-consumers="5"
       max-concurrent-consumers="10"
       connection-factory="inCachingConnectionFactory"           
       destination="requestQueue-mq"
       extract-payload="true"
       channel="demoChannel"/>


<integration:channel id="demoChannel"/>

<integration:service-activator input-channel="demoChannel" 
            ref="demoBean"
            method="upperCase"
            output-channel="orchestrationChannel" /> 

<integration:channel id="orchestrationChannel"/>

<gfe:cache id="PushProducer" cache-xml-location="classpath:PushProducer.xml"/>

<gfe:lookup-region id="exampleRegion" cache-ref="PushProducer" name="exampleRegion"/> 

<int-gfe:outbound-channel-adapter id="cacheChannel" channel="orchestrationChannel" region="exampleRegion">
        <int-gfe:cache-entries>
            <entry key="payload" value="abcd"/>
        </int-gfe:cache-entries> 
</int-gfe:outbound-channel-adapter>

以下是我在应用程序中收到消息时看到的错误

[org.springframework.jms.listener.DefaultMessageListenerContainer#0-3][org.springframework.integration.gemfire.outbound.CacheWritingMessageHandler] org.springframework.integration.gemfire.outbound.CacheWritingMessageHandler#0 received message: GenericMessage [payload=<?xml version="1.0" encoding="UTF-8"?

在上面的payload行中打印在这里..下面的行是错误

12:20:00.196 WARN  [org.springframework.jms.listener.DefaultMessageListenerContainer#0-3][org.springframework.jms.listener.DefaultMessageListenerContainer] Execution of JMS message listener failed, and no ErrorHandler has been set.
java.lang.AbstractMethodError
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:78)
    at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116)
    at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:101)
    at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:97)
    at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77)
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:277)
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:239)
    at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115)
    at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:45)
    at org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:95)
    at org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutput(AbstractMessageProducingHandler.java:248)
    at org.springframework.integration.handler.AbstractMessageProducingHandler.produceOutput(AbstractMessageProducingHandler.java:171)
    at org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutputs(AbstractMessageProducingHandler.java:119)
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:105)
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:78)
    at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116)
    at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:101)
    at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:97)
    at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77)
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:277)
    at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115)
    at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:45)
    at org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:95)
    at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:133)
    at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:125)
    at org.springframework.integration.gateway.MessagingGatewaySupport.send(MessagingGatewaySupport.java:302)
    at org.springframework.integration.jms.ChannelPublishingJmsMessageListener$GatewayDelegate.send(ChannelPublishingJmsMessageListener.java:479)
    at org.springframework.integration.jms.ChannelPublishingJmsMessageListener.onMessage(ChannelPublishingJmsMessageListener.java:322)
    at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:660)
    at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:620)
    at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:591)
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:308)
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:246)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1142)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1134)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1031)
    at java.lang.Thread.run(Thread.java:662)
4

2 回答 2

0

首先,堆栈跟踪中没有足够的信息。没有积分CacheWritingMessageHandler

从另一边看到这个:http ://docs.spring.io/spring-integration/docs/latest-ga/reference/html/gemfire.html#gemfire-outbound 。所以,你<entry key="payload" value="abcd"/>是无效的,因为两者都key必须value是 SpEL 表达式。由于根评估对象是对象上Message没有这样的吸气剂。getAbcd()Message

于 2015-02-15T09:53:42.350 回答
0

AbstractMethodError通常是因为类路径问题(版本不匹配)。

在这种情况下,看起来您使用的是spring-integration-core4.x 和spring-integration-gemfire3.x(或更早版本);或相反亦然。

在 4.0 中,该方法的签名发生了变化(不同的Message对象)。

我建议您对所有内容都使用 4.1.2。

于 2015-02-15T14:16:53.087 回答