如何在标头中使用不仅仅是String的AWS SQS消息?

时间:2018-01-23 21:58:56

标签: java spring-integration

我有一个Spring Integration项目,它被配置为使用来自AWS SQS的消息,当生成只有String标题和简单正文的消息时,处理器会快速消耗它。

但是当我尝试使用一个消息时,假设在标题属性中有一个Binary.xml,消息刚刚在航班上 但它从未消耗过。 Spring Integration有什么问题?有人能帮助我吗?

我尝试使用有线点击查看深度日志(Enabling logging in spring integration utiliy),但未显示任何内容。

<int:channel id="in">
    <int:interceptors>
        <int:wire-tap channel="logger"/>
    </int:interceptors>
</int:channel>

<int:logging-channel-adapter id="logger" level="TRACE"/>

我的 connectionFactory bean:

<bean id="basicAWSCredential" class="com.amazonaws.auth.BasicAWSCredentials"
          primary="true">
    <constructor-arg value="${awsAccessKey}"/>
    <constructor-arg value="${awsSecretKey}"/>
</bean>

<bean id="AWSCredentialProvider" class="com.amazonaws.auth.AWSStaticCredentialsProvider"
      primary="true">
    <constructor-arg index="0" ref="basicAWSCredential"></constructor-arg>
</bean>

<bean id="AWSClientBuilder" class="com.amazonaws.services.sqs.AmazonSQSClientBuilder"
      factory-method="standard" primary="true">
    <property name="region" value="${awsRegion}"/>
    <property name="credentials" ref="AWSCredentialProvider"/>
</bean>

<bean id="SQSProviderConfiguration" class="com.amazon.sqs.javamessaging.ProviderConfiguration">
    <property name="numberOfMessagesToPrefetch" value="20"/>
</bean>

<bean id="connectionFactory" class="com.amazon.sqs.javamessaging.SQSConnectionFactory">
    <constructor-arg ref="SQSProviderConfiguration"/>
    <constructor-arg ref="AWSClientBuilder"/>
</bean>

我的消费者bean:

<int-jms:message-driven-channel-adapter
    channel="RouteByFileCompressionChannel" connection-factory="connectionFactory"
    destination-name="MyQueueName" concurrent-consumers="10"
    acknowledge="client" max-concurrent-consumers="20" id="SqsInboundAdapter" />

1 个答案:

答案 0 :(得分:0)

我发现问题是其中一个标题中的自定义类型。

Spring Integration JMS Adapter无法解析ViewController1自定义类型,因此在生成此类型的消息时不会发生任何事情。我不知道是谁制作了这样的标题,但现在我修复了应用程序中的所有生成器。

非常感谢那些帮助我的人。