向QueueChannel发送消息

时间:2015-05-03 20:37:46

标签: spring jms spring-integration

我对JMS的了解非常微弱所以请耐心等待。

我正在尝试向队列消息频道发送一条简单的消息。

@Autowired
private MessageChannel myChannel = null;

@Test
public void testRecieveMethod() {
    Message m = ((QueueChannel)myChannel).receive();
    System.out.println("HELLO");
}

当我尝试从另一个程序发送消息时,程序会像它应该挂起但,它似乎没有被收到。

private MessageChannel channel = null;

@Test
public void testMessage() {
    channel = super.ctx.getBean("myChannel", MessageChannel.class);
    jackMessage message = new ameerMessage("Hello my name is jack");
    Message<ameerMessage> msg = MessageBuilder.withPayload(message).build();
    channel.send(msg, 10000);
}

这是我的applicationContext

<int:channel id="myChannel">
     <int:queue capacity="10"/>
 </int:channel>

 <jms:inbound-channel-adapter id="JmsAdapter"
     connection-factory="connectionFactory"
     destination="myQueue"
     channel="myChannel">
     <int:poller fixed-rate = "1000"/>
 </jms:inbound-channel-adapter>

 <bean id="myQueue"
   class="org.apache.activemq.command.ActiveMQQueue">
   <constructor-arg value="MYQUEUE"/>
 </bean> 

<bean name="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
  <property name="brokerURL">
      <value>tcp://localhost:61616</value>
  </property> 
</bean>

<bean id="myProcessor"
   class="com.jack.springintegration.Processor"/>
</beans>

不知道我为什么没有收到邮件。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

你说“另一个程序”。如果它真的是另一个程序,则它们是不同的myChannel s。

我认为您要做的是向JMS发送消息,以便第一个程序的myChannel将从JMS获取消息。

您需要在第二个程序中使用出站通道适配器将消息发送到JMS队列。