Class PublisherOptions (2.15.0)

Configuration options for a Publisher.

These are largely used to control the batching configuration for a publisher. By default a publishers flushes a batch as soon as any of these conditions are met:

  • 10ms after the first message is put in the batch,
  • when the batch contains 100 messages or more,
  • when the batch contains 1MiB of data or more.

Applications developers should consult the Cloud Pub/Sub pricing page when selecting a batching configuration.

Example
  namespace pubsub = ::google::cloud::pubsub;
  using ::google::cloud::future;
  using ::google::cloud::Options;
  using ::google::cloud::StatusOr;
  [](std::string project_id, std::string topic_id) {
    auto topic = pubsub::Topic(std::move(project_id), std::move(topic_id));
    // By default, the publisher will flush a batch after 10ms, after it
    // contains more than 100 message, or after it contains more than 1MiB of
    // data, whichever comes first. This changes those defaults.
    auto publisher = pubsub::Publisher(pubsub::MakePublisherConnection(
        std::move(topic),
        Options{}
            .set<pubsub::MaxHoldTimeOption>(std::chrono::milliseconds(20))
            .set<pubsub::MaxBatchBytesOption>(4 * 1024 * 1024L)
            .set<pubsub::MaxBatchMessagesOption>(200)));

    std::vector<future<void>> ids;
    for (char const* data : {"1", "2", "3", "go!"}) {
      ids.push_back(
          publisher.Publish(pubsub::MessageBuilder().SetData(data).Build())
              .then([data](future<StatusOr<std::string>> f) {
                auto s = f.get();
                if (!s) return;
                std::cout << "Sent '" << data << "' (" << *s << ")\n";
              }));
    }
    publisher.Flush();
    // Block until they are actually sent.
    for (auto& id : ids) id.get();
  }

Constructors

PublisherOptions()

PublisherOptions(Options)

Initialize the publisher options.

Expected options are any of the types in the PublisherOptionList

Parameter
NameDescription
opts Options

configuration options

Functions

maximum_hold_time() const

Publisher batch control

Returns
TypeDescription
std::chrono::microseconds

set_maximum_hold_time(std::chrono::duration< Rep, Period >)

Sets the maximum hold time for the messages.

Parameters
NameDescription
v std::chrono::duration< Rep, Period >
typename Rep
typename Period
Returns
TypeDescription
PublisherOptions &

maximum_batch_message_count() const

Publisher batch control

Returns
TypeDescription
std::size_t

set_maximum_batch_message_count(std::size_t)

Set the maximum number of messages in a batch.

Parameter
NameDescription
v std::size_t
Returns
TypeDescription
PublisherOptions &

maximum_batch_bytes() const

Publisher batch control

Returns
TypeDescription
std::size_t

set_maximum_batch_bytes(std::size_t)

Set the maximum size for the messages in a batch.

Parameter
NameDescription
v std::size_t
Returns
TypeDescription
PublisherOptions &

message_ordering() const

Return true if message ordering is enabled.

Returns
TypeDescription
bool

enable_message_ordering()

Enable message ordering.

See Also

the documentation for the Publisher class for details.

Returns
TypeDescription
PublisherOptions &

disable_message_ordering()

Disable message ordering.

See Also

the documentation for the Publisher class for details.

Returns
TypeDescription
PublisherOptions &

set_maximum_pending_bytes(std::size_t)

Flow control based on pending bytes.

Parameter
NameDescription
v std::size_t
Returns
TypeDescription
PublisherOptions &

set_maximum_pending_messages(std::size_t)

Flow control based on pending messages.

Parameter
NameDescription
v std::size_t
Returns
TypeDescription
PublisherOptions &

maximum_pending_bytes() const

Publisher flow control.

Returns
TypeDescription
std::size_t

maximum_pending_messages() const

Publisher flow control.

Returns
TypeDescription
std::size_t

full_publisher_ignored() const

The current action for a full publisher.

Returns
TypeDescription
bool

full_publisher_rejects() const

The current action for a full publisher.

Returns
TypeDescription
bool

full_publisher_blocks() const

The current action for a full publisher.

Returns
TypeDescription
bool

set_full_publisher_ignored()

Ignore full publishers, continue as usual.

Returns
TypeDescription
PublisherOptions &

set_full_publisher_rejects()

Configure the publisher to reject new messages when full.

Returns
TypeDescription
PublisherOptions &

set_full_publisher_blocks()

Configure the publisher to block the caller when full.

Returns
TypeDescription
PublisherOptions &