“шаблон:обмен сообщениями” относится к концепции использования шаблонов или методов обмена сообщениями при разработке программного обеспечения. Эти шаблоны обычно используются для облегчения связи и координации между различными компонентами или системами в распределенной или асинхронной среде. Вот несколько методов с примерами кода для реализации шаблонов обмена сообщениями:
-
Шаблон публикации/подписки:
- Описание. В этом шаблоне издатели публикуют сообщения по темам, а подписчики получают сообщения по интересующим их темам.
- Пример кода (Python – с использованием библиотеки
paho-mqtt):import paho.mqtt.client as mqtt def on_message(client, userdata, msg): print("Received message: " + msg.payload.decode()) client = mqtt.Client() client.on_message = on_message client.connect("mqtt.example.com", 1883, 60) client.subscribe("topic/example") client.loop_forever()
-
Шаблон запроса/ответа:
- Описание. В этом шаблоне запрашивающая сторона отправляет сообщение с запросом, а отвечающая сторона отвечает ответным сообщением.
- Пример кода (Java – с использованием API
javax.jms):import javax.jms.*; public class Requestor { public static void main(String[] args) throws JMSException { ConnectionFactory connectionFactory = new com.sun.messaging.ConnectionFactory(); Connection connection = connectionFactory.createConnection(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination requestQueue = session.createQueue("requestQueue"); Destination replyQueue = session.createQueue("replyQueue"); MessageProducer producer = session.createProducer(requestQueue); MessageConsumer consumer = session.createConsumer(replyQueue); TextMessage requestMessage = session.createTextMessage("Hello, server!"); requestMessage.setJMSReplyTo(replyQueue); producer.send(requestMessage); Message replyMessage = consumer.receive(); if (replyMessage instanceof TextMessage) { TextMessage textMessage = (TextMessage) replyMessage; System.out.println("Received reply: " + textMessage.getText()); } connection.close(); } }
-
Шаблон очереди сообщений:
- Описание. Этот шаблон предполагает отправку и получение сообщений через очередь сообщений, которая действует как буфер между отправителями и получателями.
- Пример кода (C# – использование пространства имен
System.Messaging):using System.Messaging; public class MessageQueueExample { public static void Main() { MessageQueue queue = new MessageQueue(".\\Private$\\MyQueue"); Message message = new Message("Hello, queue!"); queue.Send(message); Message receivedMessage = queue.Receive(); string messageBody = receivedMessage.Body.ToString(); Console.WriteLine("Received message: " + messageBody); } }