activemq中是否有一个特性(可能是camel)来执行以下操作?在代理处拦截传入消息基于任意规则验证标头和/或正文如果邮件未验证,则向发件人引发异常,或。。将无效消息重新路由到“拒绝”队列
zzzyeukh1#
您可以使用activemq代理camel组件截取代理中的消息,并使用camel路由对它们进行路由http://activemq.apache.org/broker-camel-component.html
ecr0jaav2#
看了你的描述,我猜你是想把收到的信息排成一列。有一个新的内部类,它实现了messagelistener。编写一个接受某些参数并进行验证的方法。在onmessage方法中,您可以调用传递适当参数的方法,如果条件满足,则将消息排队,在父方法中-创建此类的示例并将其设置为setmessagelistener。
jrcvhitl3#
下面是如何创建传入消息拦截器:1.在连接工厂:
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; } }
3条答案
按热度按时间zzzyeukh1#
您可以使用activemq代理camel组件截取代理中的消息,并使用camel路由对它们进行路由
http://activemq.apache.org/broker-camel-component.html
ecr0jaav2#
看了你的描述,我猜你是想把收到的信息排成一列。
有一个新的内部类,它实现了messagelistener。编写一个接受某些参数并进行验证的方法。
在onmessage方法中,您可以调用传递适当参数的方法,如果条件满足,则将消息排队,
在父方法中-创建此类的示例并将其设置为setmessagelistener。
jrcvhitl3#
下面是如何创建传入消息拦截器:
1.在连接工厂:
2.在此拦截器中: