RabbitTemplate の API を調べてみました。キューからメッセージを取得する receive メソッドのみを提供します。ただし、特定の相関 ID を持つメッセージを取得する方法はありません。ここで何が欠けているかを理解するのを手伝ってくれませんか。
現在、ActiveMQ の JMS API を使用して、メッセージ セレクターで createConsumer を作成する次のコードを使用してメッセージを受信しています。RabbitMQ を使用して Spring AMQP で同じことを行うには:
private ObjectMessage receiveMessage(final String readQueue, final UUID correlationId, final boolean isBroadcastMessage, final int readTimeout) throws JMSException
{
final ActiveMQConnectionFactory connectionFactory = this.findConnectionFactory(readQueue);
Connection connection = null;
Session session = null;
MessageConsumer consumer = null;
ObjectMessage responseMessage = null;
try
{
connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(readQueue);
consumer = session.createConsumer(destination, "correlationId = '" + correlationId + "'");
final Message message = consumer.receive(readTimeout);
}
finally
{
if (consumer != null)
{
consumer.close();
}
if (session != null)
{
session.close();
}
if (connection != null)
{
connection.close();
}
}
return responseMessage;
}