根据规则拦截传入的 JMS 消息到 ActiveMQ,reject/approve

Intercept incoming JMS messages to ActiveMQ, reject/approve based on rules

ActiveMQ 中是否有一项功能(可能与 Camel 一起使用)来执行以下操作?

阅读您的描述,我推测您正在尝试对传入消息进行排队。

有一个新的内部 class,它实现了 MessageListener。编写一个接受一些参数并进行一些验证的方法。

在onMessage方法中,可以调用该方法传递适当的参数,如果条件满足,将消息加入队列,

在父方法中- 创建此 class 的实例并将其设置为 setMessageListener。

您可以使用 ActiveMQ 代理 Camel 组件拦截代理内的消息并使用 Camel 路由路由它们

以下是如何制作传入消息拦截器:
1.In 你的连接工厂:

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url, username, password);
connectionFactory.getServerLocator().setIncomingInterceptorList("com.itsgosho.emails.EmailIncomingInterceptor");

2.In 这个拦截器:

@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;
}
}