【发布时间】:2023-04-07 21:38:01
【问题描述】:
我有一个向rabbitmq发送消息的服务,消费者对消息进行一些操作并重新排队。
我可以成功地向 rabbitmq 发送初始消息,但问题是如果消息需要修改,我无法向 rabbitmq 重新发送任何已使用的消息。
@Service
public class MyService {
/**
* The template
*/
@Autowired
private AmqpTemplate amqpTemplate;
private final RabbitMQConfig config;
public void send(String message) {
try {
amqpTemplate.convertAndSend("ex", "r", message);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
然后在我的配置中我进行了设置: @豆角,扁豆 public ConnectionFactory connectionFactory() { /* 工作代码 */ }
@Bean
public Queue myQueue() { return new Queue("my-queue");
// etc...
@Bean
MessageListenerAdapter myListenerAdapter(MyListener listener) {
return new MessageListenerAdapter(listener, "listener");
}
@Bean
MyListener myListener() {
return new MyListener();
}
那么……
public class MyListener {
public void receiveMessage(String message) {
// ... some code
// if message requires modification, then repush
new Repush().push(message);
}
}
我尝试使用 new 创建一个新类,但“myService”始终为空
@Component
public class Repush {
@Autowired
private MyService myService;
public void push(String message) {
// myService is null at this point
}
}
【问题讨论】: