# DSL: Ash.Notifier.PubSub
A pubsub notifier extension.
## pub_sub
A section for configuring how resource actions are published over pubsub
See the [PubSub](/documentation/topics/pub_sub.md) and [Notifiers](/documentation/topics/notifiers.md) guide for more.
### Nested DSLs
* [publish](#pub_sub-publish)
* [publish_all](#pub_sub-publish_all)
### Examples
```
pub_sub do
module MyEndpoint
prefix "post"
broadcast_type :phoenix_broadcast
publish :destroy, ["foo", :id]
publish :update, ["bar", :name] event: "name_change"
publish_all :create, "created"
end
```
### Options
Name |
Type |
Default |
Docs |
module
*
|
atom
|
|
The module to call `broadcast/3` on e.g module.broadcast(topic, event, message).
|
prefix
|
String.t
|
|
A prefix for all pubsub messages, e.g `users`. A message with `created` would be published as `users:created`
|
broadcast_type
|
:notification | :phoenix_broadcast | :broadcast
|
:notification
|
What shape the event payloads will be in. See
|
name
|
atom
|
|
A named pub sub to pass as the first argument to broadcast.
|
## pub_sub.publish
```elixir
publish action, topic
```
Configure a given action to publish its results over a given topic.
See the [PubSub](/documentation/topics/pub_sub.md) and [Notifiers](/documentation/topics/notifiers.md) guides for more.
### Examples
```
publish :create, "created"
```
```
publish :assign, "assigned"
```
### Options
Name |
Type |
Default |
Docs |
action
*
|
atom
|
|
The name of the action that should be published
|
topic
*
|
`any`
|
|
The topic to publish
|
event
|
String.t
|
|
The name of the event to publish. Defaults to the action name
|
dispatcher
|
atom
|
|
The module to use as a dispatcher. If none is set, the pubsub module provided is used.
|
### Introspection
Target: `Ash.Notifier.PubSub.Publication`
## pub_sub.publish_all
```elixir
publish_all type, topic
```
Works just like `publish`, except that it takes a type
and publishes all actions of that type
See the [PubSub](/documentation/topics/pub_sub.md) and [Notifiers](/documentation/topics/notifiers.md) guides for more.
### Examples
```
publish_all :create, "created"
```
### Options
Name |
Type |
Default |
Docs |
topic
*
|
`any`
|
|
The topic to publish
|
type
|
:create | :update | :destroy
|
|
Publish on all actions of a given type
|
action
|
atom
|
|
The name of the action that should be published
|
event
|
String.t
|
|
The name of the event to publish. Defaults to the action name
|
dispatcher
|
atom
|
|
The module to use as a dispatcher. If none is set, the pubsub module provided is used.
|
### Introspection
Target: `Ash.Notifier.PubSub.Publication`