@@ -833,6 +833,7 @@ public void shouldPreserveDlqHeadersWithErrorInformation() throws Exception {
833833 connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_TOPIC , "mytopic" );
834834 connectorConfigProps .put (ConnectorConfig .ERRORS_TOLERANCE_CONFIG , "all" );
835835 connectorConfigProps .put (MQSourceConnector .DLQ_TOPIC_NAME_CONFIG , "__dlq.mq.source" );
836+ connectorConfigProps .put (MQSourceConnector .DLQ_CONTEXT_HEADERS_ENABLE_CONFIG , "true" );
836837 connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_MESSAGE_BODY_JMS , "true" );
837838 connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_RECORD_BUILDER ,
838839 "com.ibm.eventstreams.connect.mqsource.builders.JsonRecordBuilder" );
@@ -918,6 +919,7 @@ public void shouldPreserveJmsPropertiesInDlqMessages() throws Exception {
918919 connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_TOPIC , "mytopic" );
919920 connectorConfigProps .put (ConnectorConfig .ERRORS_TOLERANCE_CONFIG , "all" );
920921 connectorConfigProps .put (MQSourceConnector .DLQ_TOPIC_NAME_CONFIG , "__dlq.mq.source" );
922+ connectorConfigProps .put (MQSourceConnector .DLQ_CONTEXT_HEADERS_ENABLE_CONFIG , "true" );
921923 connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_MESSAGE_BODY_JMS , "true" );
922924 connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_JMS_PROPERTY_COPY_TO_KAFKA_HEADER , "true" );
923925 connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_RECORD_BUILDER ,
@@ -1028,6 +1030,7 @@ public void verifyHeadersWithErrorTolerance() throws Exception {
10281030 connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_TOPIC , "mytopic" );
10291031 connectorConfigProps .put (ConnectorConfig .ERRORS_TOLERANCE_CONFIG , "all" );
10301032 connectorConfigProps .put (MQSourceConnector .DLQ_TOPIC_NAME_CONFIG , "__dlq.mq.source" );
1033+ connectorConfigProps .put (MQSourceConnector .DLQ_CONTEXT_HEADERS_ENABLE_CONFIG , "true" );
10311034 connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_MESSAGE_BODY_JMS , "true" );
10321035 connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_RECORD_BUILDER ,
10331036 "com.ibm.eventstreams.connect.mqsource.builders.JsonRecordBuilder" );
@@ -1106,6 +1109,56 @@ public void verifyHeadersWithErrorTolerance() throws Exception {
11061109 .toString ().contains ("com.ibm.eventstreams.connect.mqsource.JMSWorker.toSourceRecord" )).isTrue ();
11071110 }
11081111
1112+ @ Test
1113+ public void verifyHeadersWithErrorTolerance_WithDLQHeaderContextDisabled () throws Exception {
1114+ connectTask = getSourceTaskWithEmptyKafkaOffset ();
1115+
1116+ final Map <String , String > connectorConfigProps = createDefaultConnectorProperties ();
1117+ connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_TOPIC , "mytopic" );
1118+ connectorConfigProps .put (ConnectorConfig .ERRORS_TOLERANCE_CONFIG , "all" );
1119+ connectorConfigProps .put (MQSourceConnector .DLQ_TOPIC_NAME_CONFIG , "__dlq.mq.source" );
1120+ connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_MESSAGE_BODY_JMS , "true" );
1121+ connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_RECORD_BUILDER ,
1122+ "com.ibm.eventstreams.connect.mqsource.builders.JsonRecordBuilder" );
1123+ connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_JMS_PROPERTY_COPY_TO_KAFKA_HEADER , "true" );
1124+
1125+ connectTask .start (connectorConfigProps );
1126+
1127+ final TextMessage message = getJmsContext ().createTextMessage ("Invalid JSON message" );
1128+ message .setStringProperty ("teststring" , "myvalue" );
1129+ message .setIntProperty ("volume" , 11 );
1130+ message .setDoubleProperty ("decimalmeaning" , 42.0 );
1131+
1132+ // Both invalid and valid messages are received
1133+ final List <Message > testMessages = Arrays .asList (
1134+ message , // Poison message
1135+ getJmsContext ().createTextMessage ("{ \" i\" : 0 }" ) // Valid message
1136+ );
1137+ putAllMessagesToQueue (DEFAULT_SOURCE_QUEUE , testMessages );
1138+
1139+ final List <SourceRecord > processedRecords = connectTask .poll ();
1140+
1141+ assertThat (processedRecords ).hasSize (2 );
1142+
1143+ final SourceRecord dlqRecord = processedRecords .get (0 );
1144+ assertThat (dlqRecord .topic ()).isEqualTo ("__dlq.mq.source" );
1145+
1146+ final Headers headers = dlqRecord .headers ();
1147+
1148+ // Actual headers
1149+ assertThat (headers .lastWithName ("teststring" ).value ()).isEqualTo ("myvalue" );
1150+ assertThat (headers .lastWithName ("volume" ).value ()).isEqualTo ("11" );
1151+ assertThat (headers .lastWithName ("decimalmeaning" ).value ()).isEqualTo ("42.0" );
1152+
1153+ assertThat (headers .lastWithName ("__connect.errors.topic" )).isNull ();
1154+ assertThat (headers .lastWithName ("__connect.errors.class.name" )).isNull ();
1155+ assertThat (headers .lastWithName ("__connect.errors.exception.message" )).isNull ();
1156+ assertThat (headers .lastWithName ("__connect.errors.timestamp" )).isNull ();
1157+ assertThat (headers .lastWithName ("__connect.errors.cause.message" )).isNull ();
1158+ assertThat (headers .lastWithName ("__connect.errors.cause.class" )).isNull ();
1159+ assertThat (headers .lastWithName ("__connect.errors.exception.stacktrace" )).isNull ();
1160+ }
1161+
11091162 @ Test
11101163 public void verifyLoggingWarningWithErrorTolerance () throws Exception {
11111164 connectTask = getSourceTaskWithEmptyKafkaOffset ();
0 commit comments