Message objects provide a simple interface for users to get message data and acknowledge the message.
Package
@google-cloud/pubsubExample
subscription.on('message', message => {
// {
// ackId: 'RUFeQBJMJAxESVMrQwsqWBFOBCEhPjA',
// attributes: {key: 'value'},
// data: Buffer.from('Hello, world!'),
// id: '1551297743043',
// orderingKey: 'ordering-key',
// publishTime: new PreciseDate('2019-02-27T20:02:19.029534186Z'),
// received: 1551297743043,
// length: 13
// }
});
Constructors
(constructor)(sub, { ackId, message, deliveryAttempt })
constructor(sub: Subscriber, { ackId, message, deliveryAttempt }: google.pubsub.v1.IReceivedMessage);
Constructs a new instance of the Message
class
Parameters | |
---|---|
Name | Description |
sub |
Subscriber
The parent subscriber. |
{ ackId, message, deliveryAttempt } |
IReceivedMessage
|
Properties
ackId
ackId: string;
attributes
attributes: {
[key: string]: string;
};
data
data: Buffer;
deliveryAttempt
deliveryAttempt: number;
id
id: string;
length
get length(): number;
The length of the message data.
{number}
orderingKey
orderingKey?: string;
parentSpan
parentSpan?: tracing.Span;
Tracks a telemetry tracing parent span through the receive process. This will be the original publisher-side span if we have one; otherwise we'll create a "publisher" span to hang new subscriber spans onto.
This needs to be declared explicitly here, because having a public class implement a private interface seems to confuse TypeScript. (And it's needed in unit tests.)
publishTime
publishTime: PreciseDate;
received
received: number;
subSpans
subSpans: SubscriberSpans;
Tracks subscriber-specific telemetry objects through the library.
Methods
ack()
ack(): void;
Acknowledges the message.
Returns | |
---|---|
Type | Description |
void |
subscription.on('message', message => {
message.ack();
});
ackFailed(error)
ackFailed(error: AckError): void;
Sets this message's exactly once delivery acks to permanent failure. This is meant for internal library use only.
Parameter | |
---|---|
Name | Description |
error |
AckError
|
Returns | |
---|---|
Type | Description |
void |
ackWithResponse()
ackWithResponse(): Promise<AckResponse>;
Acknowledges the message, expecting a response (for exactly-once delivery subscriptions). If exactly-once delivery is not enabled, this will immediately resolve successfully.
Returns | |
---|---|
Type | Description |
Promise<AckResponse> |
subscription.on('message', async (message) => {
const response = await message.ackWithResponse();
});
endParentSpan()
endParentSpan(): void;
Ends any open subscribe telemetry tracing span.
Returns | |
---|---|
Type | Description |
void |
modAck(deadline)
modAck(deadline: number): void;
Modifies the ack deadline. At present time, this should generally not be called by users.
Parameter | |
---|---|
Name | Description |
deadline |
number
The number of seconds to extend the deadline. |
Returns | |
---|---|
Type | Description |
void |
modAckWithResponse(deadline)
modAckWithResponse(deadline: number): Promise<AckResponse>;
Modifies the ack deadline, expecting a response (for exactly-once delivery subscriptions). If exactly-once delivery is not enabled, this will immediately resolve successfully. At present time, this should generally not be called by users.
Parameter | |
---|---|
Name | Description |
deadline |
number
The number of seconds to extend the deadline. |
Returns | |
---|---|
Type | Description |
Promise<AckResponse> |
nack()
nack(): void;
Removes the message from our inventory and schedules it to be redelivered.
Returns | |
---|---|
Type | Description |
void |
subscription.on('message', message => {
message.nack();
});
nackWithResponse()
nackWithResponse(): Promise<AckResponse>;
Removes the message from our inventory and schedules it to be redelivered, with the modAck response being returned (for exactly-once delivery subscriptions). If exactly-once delivery is not enabled, this will immediately resolve successfully.
Returns | |
---|---|
Type | Description |
Promise<AckResponse> |
subscription.on('message', async (message) => {
const response = await message.nackWithResponse();
});