我想用springmq使用spring amqp,下面是我的配置。spring amqp rabbitmq MessageListener不工作
<rabbit:connection-factory id="rabbitConnectionFactory"
port="${rabbitmq.port}" host="${rabbitmq.host}" />
<rabbit:admin connection-factory="rabbitConnectionFactory" />
<rabbit:queue name="${rabbitmq.import.queue}" />
<rabbit:template id="importAmqpTemplate"
connection-factory="rabbitConnectionFactory" queue="${rabbitmq.import.queue}" />
<beans:bean id="importExchangeMessageListener"
class="com.stockopedia.batch.foundation.ImportMessageListener" />
<rabbit:listener-container
connection-factory="rabbitConnectionFactory" concurrency="5">
<rabbit:listener queues="${rabbitmq.import.queue}" ref="importMessageListener" />
</rabbit:listener-container>
這是簡單的消息監聽器類,
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
public class ImportMessageListener implements MessageListener {
@Override
public void onMessage(Message message) {
System.out.println("consumer output: " + message);
}
}
這是製片人(這是春天一批itemWriter),
public class ImportItemWriter<T> implements ItemWriter<T> {
private AmqpTemplate template;
public AmqpTemplate getTemplate() {
return template;
}
public void setTemplate(AmqpTemplate template) {
this.template = template;
}
public void write(List<? extends T> items) throws Exception {
for (T item : items) {
Object reply = template.convertSendAndReceive(item.toString());
System.out.println("producer output: " + reply);
}
}
}
當我跑我的春天批處理作業,ImportItemWriter。寫入被調用。但ImportMessageListener.onMessage不起作用。它不打印消息。我得到下面的所有項目輸出在控制檯上
producer output: null
producer output: null
producer output: null
producer output: null
producer output: null
producer output: null
producer output: null
編輯了另一個我注意到的錯誤。 –
謝謝,我不想從每個convertSendAndReceive調用傳遞queueName和交換。我怎樣才能配置它在模板配置?在文檔中,配置如上所述。我想使用默認交換。 – vishal
感謝添加只是路由鍵相同的隊列名稱工作! – vishal