ActiveMQ中是否有功能(可能是Camel)执行以下操作?
答案 0 :(得分:3)
您可以使用ActiveMQ代理Camel组件拦截代理中的消息并使用Camel路由路由它们
答案 1 :(得分:0)
阅读您的描述,我认为您正在尝试对传入的消息进行排队。
有一个新的内部类,它实现了MessageListener。编写一个接受某个参数并进行一些验证的方法。
在onMessage方法中,您可以调用传递适当参数的方法,如果条件满足,则对消息进行排队,
在父方法中 - 创建此类的实例并将其设置为setMessageListener。
答案 2 :(得分:0)
以下是制作传入消息拦截器的方法:
1.在您的ConnectionFactory中:
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url, username, password);
connectionFactory.getServerLocator().setIncomingInterceptorList("com.itsgosho.emails.EmailIncomingInterceptor");
2。在此拦截器中:
@Component
public class EmailIncomingInterceptor implements org.apache.activemq.artemis.api.core.Interceptor {
@Override
public boolean intercept(Packet packet, RemotingConnection connection) throws ActiveMQException {
if(isMessageReceive(packet)){
Message message = ((SessionReceiveMessage) packet).getMessage();
return false;
}
return true;
}
private boolean isMessageReceive(Packet packet){
if (packet instanceof SessionReceiveMessage) {
SessionReceiveMessage realPacket = (SessionReceiveMessage) packet;
Message msg = realPacket.getMessage();
if ((msg.getTimestamp() > 0) && msg.getUserID() != null){
return true;
}
}
return false;
}
}