Troubleshooting JMS destination issues
About this task
BPM event emitter cannot communicate with Kafka
About this task
CWMCD1011E: An exception was thrown while the message was sent. java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms. at org.apache.kafka.clients.producer.KafkaProducer$FutureFailure.<init>(KafkaProducer.java:1150) at org.apache.kafka.clients.producer.KafkaProducer.doSend(KafkaProducer.java:846) at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:784) at com.ibm.dba.bai.events.kafka.Transport.send(Transport.java:234) at com.ibm.dba.bai.events.kafka.Transport.send(Transport.java:209) at com.ibm.dba.bai.events.kafka.Transport.send(Transport.java:193) at com.ibm.dba.bai.events.BusinessEventEmitter.emit(BusinessEventEmitter.java:86) at com.ibm.bpm.mon.oi.ConfigConnectionManager.sendToKafka(ConfigConnectionManager.java:170) at com.ibm.bpm.mon.oi.BPMEventEmitterMDB.onMessage(BPMEventEmitterMDB.java:133) [...]
This stack trace means that the BPM event emitter cannot communicate with Kafka or IBM® Event Streams to retrieve the information about the partition leader. The faulty communication prevents the Kafka cluster from sending back an acknowledgment to the BPM event emitter that rolls back the send operation and keeps the event back on the JMS queue.
Procedure
Check the following configuration elements and values.
Insufficient number of replicas in the Kafka cluster
About this task
CWMCD1011E: An exception was thrown while the message was sent. java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.NotEnoughReplicasException: Messages are rejected since there are fewer in-sync replicas than required. at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.valueOrError(FutureRecordMetadata.java:94) at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.get(FutureRecordMetadata.java:64) at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.get(FutureRecordMetadata.java:29) at com.ibm.bpm.mon.oi.ConfigConnectionManager.sendToKafka(ConfigConnectionManager.java:171) at com.ibm.bpm.mon.oi.BPMEventEmitterMDB.onMessage(BPMEventEmitterMDB.java:133) at com.ibm.bpm.mon.oi.BPMEventEmitterMDB.onMessage(BPMEventEmitterMDB.java:64) at com.ibm.ejs.container.WASMessageEndpointHandler.invokeJMSMethod(WASMessageEndpointHandler.java:138) at com.ibm.ws.ejbcontainer.mdb.MessageEndpointHandler.invokeMdbMethod(MessageEndpointHandler.java:1146) [...]
This stack trace means that the number of in-sync-replicas in the Kafka or IBM Event Streams cluster is lower than the minimum required. A wrong value prevents the Kafka cluster from sending back an acknowledgment to the BPM event emitter that rolls back the send operation and keeps the event back on the JMS queue.
Procedure
Check the following configuration elements and values.
- Check that all the Kafka brokers are up and running.
- If you set the kafka.min.insync.replicas Kafka producer option in the BPMEventEmitter.yml file, ensure that the value is not higher than the number of Kafka brokers in the cluster.