Java 有没有更好的方法使用rabbitMQ来使用多线程消息?

Java 有没有更好的方法使用rabbitMQ来使用多线程消息?,java,rabbitmq,Java,Rabbitmq,我目前正在学习如何使用RabbitMQ来调度作业并将作业分派到不同的VM。我现在在工人端工作。VM上的工作程序需要执行一些硬加载作业,如果成功,则返回服务器 我在官方api上做了一些调查,也在这里,试图测试它是否可以工作 Connection connection = factory.newConnection(); final Channel channel = connection.createChannel(); channel.basicQos(10); Consumer consume

我目前正在学习如何使用RabbitMQ来调度作业并将作业分派到不同的VM。我现在在工人端工作。VM上的工作程序需要执行一些硬加载作业,如果成功,则返回服务器

我在官方api上做了一些调查,也在这里,试图测试它是否可以工作

Connection connection = factory.newConnection();
final Channel channel = connection.createChannel();
channel.basicQos(10);
Consumer consumer = new DefaultConsumer(channel) {
    @Override
    public void handleDelivery(String consumerTag, final Envelope envelope, AMQP.BasicProperties properties, final byte[] body) throws IOException {
        Thread th = new Thread() {public void run() {
        try{
        //do some jobs here...
        synchronized (this) {channel.basicAck(envelope.getDeliveryTag(), false);}
        } catch (Exception e) {
            e.printStackTrace();
            try {
                synchronized (this) {channel.basicReject(envelope.getDeliveryTag(), false)}
            } catch (IOException e1) {e1.printStackTrace();}
        }
        };
        th.start();
    }
};
channel.basicConsume(queueName, false, consumer);
这个代码对我有用。但我只是想知道是否有更好、线程更安全的方法来实现这一点。

对每条消息使用一个线程而不是一个新线程如何?根据传入消息的速率,您的方法创建的线程数量可能会快速增长,这可能会导致您的服务中断