Вы можете опубликовать sh в нескольких темах в одном клиенте, используя несколько производителей в клиенте. Тем не менее, существует взаимно-однозначная связь между продюсером и топи c. Из документации бинарного протокола Pulsar , Pulsar сначала устанавливает связь между производителем и одним топи c (в определенном пространстве арендатора / имени):
message CommandProducer {
"topic" : "persistent://my-property/my-cluster/my-namespace/my-topic",
"producer_id" : 1,
"request_id" : 1
}
И когда он отправляет сообщения, он ссылается на идентификатор производителя:
message CommandSend {
"producer_id" : 1,
"sequence_id" : 0,
"num_messages" : 1
}
Из-за этой связи между производителем и топи c, поэтому для отправки в несколько тем необходимо несколько производителей.
Эта диаграмма иллюстрирует настройку производителя и отправку сообщения:
Вот код Java, который иллюстрирует нескольких производителей в клиенте для отправки несколько тем:
// Create client object
PulsarClient client = PulsarClient.builder()
.serviceUrl("pulsar+ssl://useast2.aws.kafkaesque.io:6651")
.authentication(
AuthenticationFactory.token("eyJhbGciOiJS...")
)
.build();
// Create producer on a topic
Producer<byte[]> producer1 = client.newProducer()
.topic("persistent://tenant/local-useast2-aws/test-topic4")
.create();
// Create another producer on a different namespace/topic
Producer<byte[]> producer2 = client.newProducer()
.topic("persistent://tenant/namespace2/test-topic5")
.create();
// Send messages on the producers
producer1.newMessage().value("ping from producer1".getBytes()).send();
producer2.send("ping".getBytes());
// Send close the producers
producer1.close();
producer2.close();
Что касается потребителя, то, как и производитель, вы можете использовать несколько клиентов в клиенте, чтобы использовать несколько тем. Или вы можете использовать регулярные выражения, чтобы связать одного потребителя с несколькими темами. Но да, вы будете получать сообщения от всех тем, соответствующих регулярному выражению, для этого одного потребителя. Кстати, вы можете прочитать отличный анализ использования регулярных выражений для подписки на несколько тем Джеком Ванлайтли здесь .