如何在不阻塞的情况下调用 JmsListener 中的反应式服务?
How to invoke reactive service inside JmsListener without blocking?
@Component
@RequiredArgsConstructor
public class EventListener {
private final EventProcessingService eventProcessingService;
@JmsListener(destination = "inputQueue", constainerFactory = "myContainerFactory)
public void receiveMessage(Message message) {
eventProcessingService(message).block(); // return Mono<Void>
}
}
我有一些侦听队列的侦听器,当消息进入时它调用服务的反应方法 (EventProcessingService)。我想知道当我阻止响应式服务的执行时会发生什么,这会导致错误吗?
如果您的应用程序是使用消息的应用程序,最合适的方法是调用 subscribe()
。
Subscribe
如果您的应用程序是最终目的地,则应使用
Subscribe
,您还没有发布 eventProcessingService
实际执行的内容,因此无法真正判断。
所有代码都可能导致错误,这取决于您的错误处理方式。 Subscribe
本身不会抛出任何错误,但您可以选择以不同方式处理错误。
Here 您可以查看不同的示例,了解您希望如何处理错误,以及是否要记录错误。等等
@Component
@RequiredArgsConstructor
public class EventListener {
private final EventProcessingService eventProcessingService;
@JmsListener(destination = "inputQueue", constainerFactory = "myContainerFactory)
public void receiveMessage(Message message) {
eventProcessingService(message).block(); // return Mono<Void>
}
}
我有一些侦听队列的侦听器,当消息进入时它调用服务的反应方法 (EventProcessingService)。我想知道当我阻止响应式服务的执行时会发生什么,这会导致错误吗?
如果您的应用程序是使用消息的应用程序,最合适的方法是调用 subscribe()
。
Subscribe
如果您的应用程序是最终目的地,则应使用
Subscribe
,您还没有发布 eventProcessingService
实际执行的内容,因此无法真正判断。
所有代码都可能导致错误,这取决于您的错误处理方式。 Subscribe
本身不会抛出任何错误,但您可以选择以不同方式处理错误。
Here 您可以查看不同的示例,了解您希望如何处理错误,以及是否要记录错误。等等