我在收到spring-cloud-stream spring-boot應用的消息時遇到了問題。 我使用rabbitMq作爲消息引擎。 消息生產者是一個非彈簧啓動的應用程序,它使用Spring RestTemplate發送消息。spring雲流無法解析使用Spring RestTemplate發佈到RabbitMq的消息
隊列名稱:「audit.logging.rest」
消費者應用程序的設置來聽這個隊列。這個應用程序是春季啓動應用程序(春季雲流)。
下面是消費者代碼
application.yml
cloud:
stream:
bindings:
restChannel:
binder: rabbit
destination: audit.logging
group: rest
AuditServiceApplication.java
@SpringBootApplication
public class AuditServiceApplication {
@Bean
public ByteArrayMessageConverter byteArrayMessageConverter() {
return new ByteArrayMessageConverter();
}
@Input
@StreamListener(AuditChannelProperties.REST_CHANNEL)
public void receive(AuditTestLogger logger) {
...
}
AuditTestLogger.java
public class AuditTestLogger {
private String applicationName;
public String getApplicationName() {
return applicationName;
}
public void setApplicationName(String applicationName) {
this.applicationName = applicationName;
}
}
下面是從JSON格式的生產者應用正在發送的請求。
{"applicationName" : "AppOne" }
發現幾個問題: Issue1: 後來我發現只有在方法參數被提及作爲對象得到觸發以下方法,如彈簧雲流無法解析消息轉換爲Java POJO對象。
@Input
@StreamListener(AuditChannelProperties.REST_CHANNEL)
public void receive(AuditTestLogger logger) {
Issue2:
當我改變方法來接收對象。我看到該對象是無法解析的RMQTextMessage類型。然而,我看到其中的文字屬性實際發佈的消息。
我寫過一個ByteArrayMessageConverter,它甚至沒有幫助。
有什麼辦法可以告訴spring雲流使用MessageConverter從RMQTextMessage中提取消息並從中獲取實際的消息。
在此先感謝..
生產者應用程序已經集成了rabbitMq客戶端。我想使用我的新項目中的spring-cloud部分。但是,我會嘗試使用AMQP。謝謝 – chmk
它在生產者應用程序中使用RabbitTemplate後工作。謝謝Artem。 – chmk
太棒了!那麼接受一個答案的時間:http://stackoverflow.com/help/someone-answers –