gpt4 book ai didi

java - 如何将业务逻辑与JMS监听器分离?

转载 作者:太空宇宙 更新时间:2023-11-04 10:36:51 25 4
gpt4 key购买 nike

我正在编写 JmsAdapter,其中有 2 个名为 sendMessage 的方法用于发送消息,receiveMessage 用于在 Spring Boot 中接收消息,我有一个服务类 EventService 它使用此 JmsAdapter 发送消息。现在我很困惑在 JMSAdapter 中收到消息时如何处理消息,因为我不想在监听器 receiveMessage 方法中放置任何业务逻辑(例如数据库调用、消息处理)。我这样做是为了将业务逻辑与 JMS 适配器分离 这是 JMSAdapter 的代码 -

public class JmsAdapter {

@Autowired
private JmsTemplate jmsTemplate;

public void sendMessage(final String jsonMessage) throws JMSException {
System.out.println("Sending message = " + jsonMessage);
//TODO replace the queue name based from DB
jmsTemplate.convertAndSend("sender", jsonMessage);
System.out.println("Message Sent");
}

@JmsListener(destination = "${receiver}")
public String receiveMessage(final Message jsonMessage) throws JMSException {
System.out.println("Received message " + jsonMessage);
String response = null;
if(jsonMessage instanceof TextMessage) {
TextMessage textMessage = (TextMessage)jsonMessage;
response = textMessage.getText();
System.out.println("Message Received = "+response );
}
return response ;
}

我需要以不同的方式思考吗?还有哪些其他选择?因为会对Adapter和Service产生循环依赖。

最佳答案

我认为理想的方法是分离发送和接收消息的责任。具有多个职责的类往往会造成此类困惑。如果您对使用 EJB 没有保留,那么可以使用消息驱动 Bean 来监听传入的消息。如果不是通过 EJB,那么您应该有一个单独的类,负责监听来自该特定队列的消息并处理该消息。为了进一步分离责任,您可以从监听器中调用在 POJO 中实现的方法(这具有所有业务逻辑)。

关于java - 如何将业务逻辑与JMS监听器分离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49369301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com