翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
JMS アプリケーションを接続する
このチュートリアルでは、RabbitMQ JMS クライアントを使用して JMS アプリケーションを Amazon MQ for RabbitMQ ブローカーに接続する方法を示します。 RabbitMQ プロデューサーを作成してメッセージを送信し、コンシューマーを作成して RabbitMQ キューからメッセージを受信する方法について説明します。
開始する前に、適切な RabbitMQ JMS 依存関係を Maven プロジェクトに追加します。
JMS 1.1 および 2.0 の場合:
<dependencies> <dependency> <groupId>com.rabbitmq.jms</groupId> <artifactId>rabbitmq-jms</artifactId> <version>2.12.0</version> </dependency> </dependencies>
JMS 3.1 の場合:
<dependencies> <dependency> <groupId>com.rabbitmq.jms</groupId> <artifactId>rabbitmq-jms</artifactId> <version>3.5.0</version> </dependency> </dependencies>
プロデューサーを作成する
次のコード例は、JMS を使用して RabbitMQ キューに書き込む方法を示しています。
import jakarta.jms.*; import com.rabbitmq.jms.admin.*; // Setting the connection factory RMQConnectionFactory factory = new RMQConnectionFactory(); factory.setHost(envProps.getProperty("RABBITMQ_HOST", "localhost")); factory.setPort(Integer.parseInt(envProps.getProperty("RABBITMQ_PORT", "5672"))); factory.setUsername(envProps.getProperty("RABBITMQ_USERNAME", "guest")); factory.setPassword(envProps.getProperty("RABBITMQ_PASSWORD", "guest")); factory.setVirtualHost(envProps.getProperty("RABBITMQ_VIRTUAL_HOST", "/")); factory.useSslProtocol(); connection = factory.createConnection(); connection.start(); String queueName = "test-queue-jms"; Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); RMQDestination destination = new RMQDestination(queueName, true, false); // Send the message to the queue MessageProducer producer = session.createProducer(destination); producer.setDeliveryMode(DeliveryMode.PERSISTENT); String msg_content = "Hello World!!"; TextMessage textMessage = session.createTextMessage(msg_content); producer.send(textMessage); System.out.printf("Published to AMQP queue '%s': %s", queueName, msg_content);
コンシューマーを作成する
次のコード例は、JMS を使用して RabbitMQ キューから読み取る方法を示しています。
import jakarta.jms.*; import com.rabbitmq.jms.admin.*; // Setting the connection factory RMQConnectionFactory factory = new RMQConnectionFactory(); factory.setHost(envProps.getProperty("RABBITMQ_HOST", "localhost")); factory.setPort(Integer.parseInt(envProps.getProperty("RABBITMQ_PORT", "5672"))); factory.setUsername(envProps.getProperty("RABBITMQ_USERNAME", "guest")); factory.setPassword(envProps.getProperty("RABBITMQ_PASSWORD", "guest")); factory.setVirtualHost(envProps.getProperty("RABBITMQ_VIRTUAL_HOST", "/")); factory.useSslProtocol(); // Establish the connection and session jakarta.jms.Connection connection = factory.createConnection(); String queueName = "test-queue-jms"; Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); RMQDestination destination = new RMQDestination(); destination.setDestinationName(queueName); destination.setAmqp(true); destination.setAmqpQueueName(queueName); // Initialize consumer MessageConsumer consumer = session.createConsumer(destination); consumer.setMessageListener(message -> { try { if (message instanceof TextMessage) { TextMessage textMessage = (TextMessage) message; System.out.printf("Message: %s%n", textMessage.getText()); } else if (message instanceof BytesMessage) { BytesMessage bytesMessage = (BytesMessage) message; byte[] bytes = new byte[(int) bytesMessage.getBodyLength()]; bytesMessage.readBytes(bytes); String content = new String(bytes); System.out.printf("Message: %s%n", content); } else { System.out.printf("Message: [%s]%n", message.getClass().getSimpleName()); } } catch (JMSException e) { System.err.printf("Error processing message: %s%n", e.getMessage()); } }); connection.start();