import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.TopicPartition;
-import org.apache.kafka.common.errors.RecordDeserializationException;
import org.apache.kafka.common.errors.WakeupException;
import reactor.core.publisher.Mono;
public class ChatRoomChannel implements Runnable
{
private final String topic;
- private final Consumer<Integer, ChatRoomTo> consumer;
- private final Producer<Integer, ChatRoomTo> producer;
+ private final Producer<Integer, CreateChatRoomRequestTo> producer;
+ private final Consumer<Integer, CreateChatRoomRequestTo> consumer;
private final ShardingStrategy shardingStrategy;
private final ChatMessageChannel chatMessageChannel;
private final Clock clock;
String name)
{
int shard = this.shardingStrategy.selectShard(chatRoomId);
- ChatRoomTo chatRoomTo = ChatRoomTo.of(chatRoomId, name, shard);
+ CreateChatRoomRequestTo createChatRoomRequestTo = CreateChatRoomRequestTo.of(chatRoomId.toString(), name, shard);
return Mono.create(sink ->
{
- ProducerRecord<Integer, ChatRoomTo> record =
+ ProducerRecord<Integer, CreateChatRoomRequestTo> record =
new ProducerRecord<>(
topic,
shard,
- chatRoomTo);
+ createChatRoomRequestTo);
producer.send(record, ((metadata, exception) ->
{
if (metadata != null)
{
- log.info("Successfully send chreate-request for chat room: {}", chatRoomTo);
- sink.success(chatRoomTo.toChatRoomInfo());
+ log.info("Successfully send chreate-request for chat room: {}", createChatRoomRequestTo);
+ sink.success(createChatRoomRequestTo.toChatRoomInfo());
}
else
{
{
try
{
- ConsumerRecords<Integer, ChatRoomTo> records = consumer.poll(Duration.ofMinutes(5));
+ ConsumerRecords<Integer, CreateChatRoomRequestTo> records = consumer.poll(Duration.ofMinutes(5));
log.info("Fetched {} messages", records.count());
- for (ConsumerRecord<Integer, ChatRoomTo> record : records)
+ for (ConsumerRecord<Integer, CreateChatRoomRequestTo> record : records)
{
createChatRoom(record.value().toChatRoomInfo());
}
running = false;
}
}
+
+ log.info("Exiting normally");
}
+
void createChatRoom(ChatRoomInfo chatRoomInfo)
{
UUID id = chatRoomInfo.getId();