Method: MessageBus::Backends::Postgres#publish
- Defined in:
- lib/message_bus/backends/postgres.rb
#publish(channel, data, opts = nil) ⇒ Integer
TODO:
:queue_in_memory NOT SUPPORTED
Publishes a message to a channel
288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 |
# File 'lib/message_bus/backends/postgres.rb', line 288 def publish(channel, data, opts = nil) # TODO in memory queue? c = client backlog_id = c.add(channel, data) msg = MessageBus::Message.new backlog_id, backlog_id, channel, data payload = msg.encode c.publish postgresql_channel_name, payload if backlog_id && backlog_id % clear_every == 0 max_backlog_size = (opts && opts[:max_backlog_size]) || self.max_backlog_size max_backlog_age = (opts && opts[:max_backlog_age]) || self.max_backlog_age c.clear_global_backlog(backlog_id, @max_global_backlog_size) c.expire(max_backlog_age) c.clear_channel_backlog(channel, backlog_id, max_backlog_size) end backlog_id end |