发送消息到 QueueChannel

Sending Message to QueueChannel

我对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>

不知道为什么没有收到消息。有人可以帮忙吗?

你说"another program"。如果它真的是另一个程序那么它们是不同的 myChannels.

我想你要做的是向 JMS 发送消息,这样第一个程序的 myChannel 将从 JMS 获取消息。

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