public interface EventData extends Serializable, Comparable<EventData>
EventData
.
Serializing a received EventData
with AMQP sections other than ApplicationProperties (with primitive java types) and Data section is not supported.
Here's how AMQP message sections map to EventData
. Here's the reference used for AMQP 1.0 specification: http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-complete-v1.0-os.pdf
i.While using client libraries released by Microsoft Azure EventHubs, sections (i) and (ii) alone are sufficient. Section (iii) is used for advanced scenarios, where the sending application uses third-party AMQP library to send the message to EventHubs and the receiving application uses this client library to receivegetProperties()
- AMQPMessage.ApplicationProperties section ii.getBytes()
- if AMQPMessage.Body has Data section iii.getObject()
- if AMQPMessage.Body has AMQPValue or AMQPSequence sections
EventData
.Modifier and Type | Interface and Description |
---|---|
static class |
EventData.SystemProperties |
Modifier and Type | Method and Description |
---|---|
static EventData |
create(byte[] data)
Construct EventData to Send to EventHubs.
|
static EventData |
create(byte[] data,
int offset,
int length)
Construct EventData to Send to EventHubs.
|
static EventData |
create(ByteBuffer buffer)
Construct EventData to Send to EventHubs.
|
byte[] |
getBytes()
Get Actual Payload/Data wrapped by EventData.
|
Object |
getObject()
Use this method only if, the sender could be sending messages using third-party AMQP libraries.
|
Map<String,Object> |
getProperties()
Application property bag
|
EventData.SystemProperties |
getSystemProperties()
SystemProperties that are populated by EventHubService.
|
void |
setSystemProperties(EventData.SystemProperties props) |
compareTo
static EventData create(byte[] data)
i. Serialize the sending ApplicationEvent to be sent to EventHubs into bytes.
ii. If complex serialization logic is involved (for example: multiple types of data) - add a Hint using the getProperties()
for the Consumer.
Sample Code:
EventData eventData = EventData.create(telemetryEventBytes); eventData.getProperties().put("eventType", "com.microsoft.azure.monitoring.EtlEvent"); partitionSender.Send(eventData);
data
- the actual payload of data in bytes to be Sent to EventHubs.EventData
to send to EventHubs.EventHubClient.createFromConnectionString(String, ScheduledExecutorService)
static EventData create(byte[] data, int offset, int length)
i. Serialize the sending ApplicationEvent to be sent to EventHubs into bytes.
ii. If complex serialization logic is involved (for example: multiple types of data) - add a Hint using the getProperties()
for the Consumer.
Illustration:
EventData eventData = EventData.create(telemetryEventBytes, offset, length);
eventData.getProperties().put("eventType", "com.microsoft.azure.monitoring.EtlEvent");
partitionSender.Send(eventData);
data
- the byte[] where the payload of the Event to be sent to EventHubs is presentoffset
- Offset in the byte[] to read from ; inclusive indexlength
- length of the byte[] to be read, starting from offsetEventData
to send to EventHubs.EventHubClient.createFromConnectionString(String, ScheduledExecutorService)
static EventData create(ByteBuffer buffer)
i. Serialize the sending ApplicationEvent to be sent to EventHubs into bytes.
ii. If complex serialization logic is involved (for example: multiple types of data) - add a Hint using the getProperties()
for the Consumer.
Illustration:
EventData eventData = EventData.create(telemetryEventByteBuffer);
eventData.getProperties().put("eventType", "com.microsoft.azure.monitoring.EtlEvent");
partitionSender.Send(eventData);
buffer
- ByteBuffer which references the payload of the Event to be sent to EventHubsEventData
to send to EventHubs.EventHubClient.createFromConnectionString(String, ScheduledExecutorService)
Object getObject()
If all the senders of EventHub use client libraries released and maintained by Microsoft Azure EventHubs, use getBytes()
method.
Get the value of AMQP messages' Body section on the received EventData
.
If the AMQP message Body is always guaranteed to have Data section, use getBytes()
method.
Binary
if the Body is Data section
List
if the Body is AmqpSequence
package org.apache.qpid.proton.amqp contains various AMQP types that could be returned.
byte[] getBytes()
null if the body of the message has other inter-operable AMQP messages, whose body does not represent byte[].
In that case use getObject()
.
Map<String,Object> getProperties()
EventData.SystemProperties getSystemProperties()
As these are populated by Service, they are only present on a Received EventData.
Usage:
final String offset = eventData.getSystemProperties().getOffset();
null
if the EventData
is not received and is created by the public constructors.EventData.SystemProperties.getOffset()
,
EventData.SystemProperties.getSequenceNumber()
,
EventData.SystemProperties.getPartitionKey()
,
EventData.SystemProperties.getEnqueuedTime()
void setSystemProperties(EventData.SystemProperties props)
Copyright © 2019 Microsoft Corporation. All rights reserved.