Open
Description
When eventhub send binary message, java function app is getting garbled string message
example:
@FunctionName("eventhuexampleCx")
public void eventHubProcessorCx(
@EventHubTrigger(name = "pnrTrigger", eventHubName = "cri-319862312", consumerGroup = "test", connection = "EventHubConnectionAppSetting", cardinality = Cardinality.ONE) String paxHubMsgs,
final ExecutionContext context) {
Logger logger = context.getLogger();
logger.info("***************" + (paxHubMsgs));
byte[] bytes = paxHubMsgs.getBytes();
String message = new String(bytes, StandardCharsets.UTF_16);
logger.info(message);
}
Python script for sending binary message to eventhub
import asyncio
import struct
from azure.eventhub.aio import EventHubProducerClient
from azure.eventhub import EventData
async def run():
# Create a producer client to send messages to the event hub.
# Specify a connection string to your event hubs namespace and
# the event hub name.
producer = EventHubProducerClient.from_connection_string(conn_str="your-event-hub-connection-string", eventhub_name="cri-319862312")
async with producer:
# Create a batch.
event_data_batch = await producer.create_batch()
bin_data = struct.pack('200B', *range(200))
bin_data = b'\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b'
# Add events to the batch.
event_data_batch.add(EventData(bin_data))
# Send the batch of events to the event hub.
await producer.send_batch(event_data_batch)
loop = asyncio.get_event_loop()
loop.run_until_complete(run())