【发布时间】:2018-10-14 14:18:20
【问题描述】:
我正在玩 Spring-cloud-stream 和 RabbitMQ。
我有一个产生消息的 REST 端点。
@SpringBootApplication
@EnableBinding(MyProcessor.class)
public class ProducerDemoApplication {
public static void main(String[] args) {
SpringApplication.run(ProducerDemoApplication.class, args);
}
}
@RestController
class ProducerController {
@Autowired
MyProcessor myProcessor;
@RequestMapping(value = "sendmessage/{message}", method = RequestMethod.GET)
public String sendMessage(@PathVariable("message") String message) {
myProcessor.anOutput().send(MessageBuilder.withPayload(message).build());
return "sent";
}
}
interface MyProcessor {
String INPUT = "myInput";
@Output("myOutput")
MessageChannel anOutput();
}
通过另一个应用程序,我正在使用这些消息。
@StreamListener(MyProcessor.INPUT)
public void eventHandler(String message) {
System.out.println("************** Message received => "+message);
}
当两个应用程序都已启动并正在运行时。我能够发布消息并在消费者处使用它。
我在以下场景中面临的问题:
我故意让消费者失望并通过生产者发布消息。现在,当消费者启动时,它没有收到任何消息。
我想 RabbitMQ 保证消息传递。
Github 链接
https://github.com/govi20/producer-demo
https://github.com/govi20/consumer-demo
【问题讨论】:
-
你能把你的应用发布到 Github 上让我们看看吗?您在上面提供的内容中缺少某些内容。例如
String INPUT = "myInput";- 我没看到和@Input配置等 -
@OlegZhurakousky 我在原始问题中添加了 GitHub 链接。
标签: rabbitmq spring-cloud-stream