现在我想为我们的系统开发一个通用的邮件服务.在我们设计时,我们希望开发一个RabbitMQ生产者和消费者.在消费者方面,我们可以开发和部署一个Spring Boot或Spring Cloud应用程序,但在生产者方面,我们希望提供一个像下面的接口这样的公共邮件客户端,并为其他系统创建一个jar依赖项.
interface MailClient {
ListentableFuture send(Message message);
}
Run Code Online (Sandbox Code Playgroud)
但我看到使用许多声明方法的spring boot和spring cloud,似乎必须使用应用程序类,但我只想要一个类引用而不需要部署.我不知道如何实现它.
CompletableFuture.supplyAsync(
() -> {
transporter.write(req);
//here take the value from a blocking queue,will throw a interruptedException
return responseQueue.take();
}, executorService);
Run Code Online (Sandbox Code Playgroud)
处理interruptedException的常用方法是再次中断或直接抛出interruptedException,但两者都无法工作.有人有想法吗?
似乎自spring-amqp 1.5版以来,有一个新的注释@ queuebinding.But如何使用它,我不知道它是否可以用于类或方法?它是否存在任何例子?
我有两个困惑.
1.如果从消息侦听器抛出RuntimeException,SimpleMessageListenrContainer会停止吗?2.如果SimpleMessageListenerContainer没有停止,那么自动确认的行为是什么?
目前,我希望如果消息监听器处理消息失败,我只是记录错误并且不停止容器同时通知代理已收到消息.
现在我只是捕获了throwable in message listener方法,这是正确的方法吗?