5590026 2019-11-18 15:39 采纳率: 0%
浏览 213

springboot以方法调用的方式执行activemq

我们知道,在springboot中要发送消息给activemq,需要
在消费体中注释
@JmsListener(destination = MQDest.PUSH)

然后在service去用jmsTemplate调用
jmsTemplate.send(MQDest.PUSH, session -> {
ObjectMessage message = session.createObjectMessage(msg);
return message;
});

。。。我想请问一下,有什么办法可以直接像执行方法一样去调用,。。否则的话,我用idea都无法去跳转点开。。

  • 写回答

1条回答 默认 最新

  • 檀越剑指大厂 Java领域优质创作者 2024-01-27 19:38
    关注

    参考chatgpt
    在Spring Boot中使用JMS(Java Message Service)发送消息给ActiveMQ时,您提到的 @JmsListener 注解通常用于标注监听消息的方法。如果您希望像执行普通方法一样调用发送消息的方法,可以创建一个普通的Spring组件,并在该组件中注入 JmsTemplate,然后编写一个方法用于发送消息。

    以下是一个简单的示例:

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jms.core.JmsTemplate;
    import org.springframework.stereotype.Component;
    
    @Component
    public class MessageSender {
    
        private final JmsTemplate jmsTemplate;
    
        @Autowired
        public MessageSender(JmsTemplate jmsTemplate) {
            this.jmsTemplate = jmsTemplate;
        }
    
        public void sendMessage(String destination, Object message) {
            jmsTemplate.send(destination, session -> {
                // 创建消息
                // 例如,如果消息是字符串,可以使用 TextMessage
                // 如果消息是一个对象,可以使用 ObjectMessage
                // 更多选项可以根据您的需求进行扩展
                // 这里假设 message 是一个字符串
                return session.createTextMessage((String) message);
            });
        }
    }
    

    然后,在您的服务类或其他地方,您可以注入 MessageSender 并调用 sendMessage 方法发送消息:

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class YourService {
    
        private final MessageSender messageSender;
    
        @Autowired
        public YourService(MessageSender messageSender) {
            this.messageSender = messageSender;
        }
    
        public void yourMethod() {
            // 调用 MessageSender 发送消息
            messageSender.sendMessage("yourDestination", "Your message content");
        }
    }
    

    这样,您就可以像调用普通方法一样调用 sendMessage 方法,而不必使用 @JmsListener 注解。这种方式也更容易在IDE中跟踪和导航到代码。

    评论

报告相同问题?

悬赏问题

  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥85 maple软件,solve求反函数,出现rootof怎么办?
  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题