---
name: "Mojo::RabbitMQ::Client::Publisher"
section: "3pm"
platform: "linux"
package: "libmojo-rabbitmq-client-perl"
version: "0.3.1-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Mojo::RabbitMQ::Client::Publisher"
---

# Mojo::RabbitMQ::Client::Publisher(3pm)

simple Mojo::RabbitMQ::Client based publisher

## NAME

Mojo::RabbitMQ::Client::Publisher - simple Mojo::RabbitMQ::Client based publisher

## SYNOPSIS

```
  use Mojo::RabbitMQ::Client::Publisher;
  my $publisher = Mojo::RabbitMQ::Client::Publisher->new(
    url => 'amqp://guest:guest@127.0.0.1:5672/?exchange=mojo&routing_key=mojo'
  );
  $publisher->publish_p(
    {encode => { to => 'json'}},
    routing_key => 'mojo_mq'
  )->then(sub {
    say "Message published";
  })->catch(sub {
    die "Publishing failed"
  })->wait;
```

## DESCRIPTION

## ATTRIBUTES

Mojo::RabbitMQ::Client::Publisher has following attributes.

### url

Sets all connection parameters in one string, according to specification from \<https://www.rabbitmq.com/uri-spec.html\>.

For detailed description please see Mojo::RabbitMQ::Client#url.

## METHODS

Mojo::RabbitMQ::Client::Publisher implements only single method.

### publish\_p

```
  $publisher->publish_p('simple plain text body');
  $publisher->publish_p({ some => 'json' });
  $publisher->publish_p($body, { header => 'content' }, routing_key => 'mojo', mandatory => 1);
```

Method signature

```
  publish_p($body!, \%headers?, *@params)
```

- body

  First argument is mandatory body content of published message. Any reference passed here will be encoded as JSON and accordingly `"content_type"` header will be set to `"application/json"`.

- headers

  If second argument is a HASHREF it will be merged to message headers.

- params

  Any other arguments will be considered key/value pairs and passed to the Client's publish method as arguments overriding everything besides body argument.

  So this:

  ```
    $publisher->publish({ json => 'object' }, { header => 'content' });
  ```

  is similar to this:

  ```
    $publisher->publish({ json => 'object' }, header => { header => 'content' });
  ```

  But beware - headers passed as a HASHREF get merged into the header constructed by the Publisher, but params override values; so if you pass `"header"` as a param like this, it will override the header constructed by the Publisher, and the message will lack the `"content_type"` header, even though you passed a reference as the body argument! With the first example, the `"content_type"` header would be included.

## SEE ALSO

Mojo::RabbitMQ::Client

## COPYRIGHT AND LICENSE

Copyright (C) 2015-2017, Sebastian Podjasek and others

This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.
