67 lines
1.7 KiB
Markdown
67 lines
1.7 KiB
Markdown
# Redmine Event Outbox
|
|
|
|
Small Redmine 3.4-compatible plugin that records selected Redmine changes into a
|
|
local database outbox table for external workers.
|
|
|
|
## Events Captured
|
|
|
|
- `issue.created`
|
|
- `issue.updated`
|
|
- `journal.created`
|
|
- `contact.created` when `redmine_contacts` is installed
|
|
- `contact.updated` when `redmine_contacts` is installed
|
|
- `helpdesk_ticket.created` when `redmine_contacts_helpdesk` is installed
|
|
- `helpdesk_ticket.updated` when `redmine_contacts_helpdesk` is installed
|
|
- `journal_message.created` when `redmine_contacts_helpdesk` is installed
|
|
- `journal_message.updated` when `redmine_contacts_helpdesk` is installed
|
|
|
|
The plugin does not publish to Redis, RabbitMQ, webhooks, or external search
|
|
services directly from Redmine request callbacks. It only writes local database
|
|
rows.
|
|
|
|
## Install
|
|
|
|
Copy this directory to the Redmine plugins directory:
|
|
|
|
```sh
|
|
cp -a redmine_event_outbox /path/to/redmine/plugins/
|
|
```
|
|
|
|
Run the plugin migration:
|
|
|
|
```sh
|
|
cd /path/to/redmine
|
|
RAILS_ENV=production bundle exec rake redmine:plugins:migrate NAME=redmine_event_outbox
|
|
```
|
|
|
|
Restart Redmine. For Passenger:
|
|
|
|
```sh
|
|
touch tmp/restart.txt
|
|
```
|
|
|
|
## Verify
|
|
|
|
List the rake task:
|
|
|
|
```sh
|
|
RAILS_ENV=production bundle exec rake -T redmine_event_outbox
|
|
```
|
|
|
|
Dump pending events:
|
|
|
|
```sh
|
|
RAILS_ENV=production bundle exec rake redmine_event_outbox:dump LIMIT=20
|
|
```
|
|
|
|
Create or update a low-risk test issue, then run the dump task again. You should
|
|
see JSON rows in `event_outbox_events`.
|
|
|
|
## Notes
|
|
|
|
- Payloads are JSON serialized into a `text` column for MySQL and Redmine 3.4
|
|
compatibility.
|
|
- Outbox write failures are rescued and logged so normal Redmine saves are not
|
|
intentionally failed by this plugin.
|
|
- Consumers should treat events as at-least-once and idempotent.
|