Pigeon
is an end-user server application (HTTP Message Broker) designed for distribution of text messages in HTTP format.
Pigeon
is capable to:
- Enqueue a text message from external source using REST API or direct insert into Pigeon DB by the external app
- Convert it into one or more HTTP messages with a specified body/query string parameters using appropriate
Plugins
(plugins can be developed by end-users using Groovy script) - Dispatch the resulting messages ansynchronously to one or more recipients (URLs) using a variety of HTTP connection and authentication mechanisms (such as AWS v4 signature)
- If needed retry sending the message several times
Pigeon
is an enterprise-grade software created within banking/fintech industry.
It is having some useful features to help survive in the daily routines and bureaucracy of large organizations:
- DB agnostic (tested and used with MySQL, PostgreSQL and most importantly - with MSSQL which is very lock sensitive + AD authentication support)
- Durable (e.g. handles DB restarts, MySQL session timeouts, etc)
- Supports retries when remote server was down
- Plugins - develop or change plugins without deploying the new app version
- Predictable - allows to explicitly control number of concurrent threads and connections
- Situation-friendly - as a Client software,
Pigeon
supports self-signed server HTTPS certificates, wrong server HTTPS certificates and even HTTP - User-friendly - raw HTTP log viewing in browser without special character escaping
- Outstanding logging capabilities - using Bobbin and BlackBox
- Easy installation
- Complete documentation
- Simple configuration using only 1 file
- Supports enterprise security features
- Spring Boot
- Groovy
- SQL DB (via JPA and Spring Data)
- REST+HATEOAS (via Spring Data Rest repositories)
- Functionality extensible using Plugins (Groovy scripts)
- Scalable (multithreaded app with configurable outbound thread pool sizes for load balancing and scalability)
We have deployed a demo Pigeon Plugins repository is as a demo Heroku app (pigeon-public
).
Just open the below URL in your browser:
This demo Heroku pigeon-public
app asynchronously enqueues and sends a email.
- Replace
email@gmail.com
with your email (we will not save/share/store/disclose it, it is fully private) - Only Gmail addresses are supported in this demo
- You can change also subject, text and from
- Check
spam
folder in your Gmail account - Navigate through returned URLs to see message status and HTTP logs
- First time request may take up to 50 seconds, due to free Heroku dyno unidlying startup.
{
"inputQueues": [
{
"name": "SMSGLOBAL",
"outputQueues": [
{
"name": "SMSGLOBAL",
"url": "https://api.smsglobal.com/http-api.php",
"maxRetryCount": 0,
"normalThreadCount": 4,
"retryThreadCount": 0,
"conversionModuleName": "PASSTHROUGH_GET.groovy",
"senderClassName": "io.infinite.pigeon.http.SenderDefaultHttps",
"httpProperties": {
"username": "smsglobaluser",
"password": "smsglobalpassword"
},
"extensions": {
"from": "your%20service"
}
},
{
"name": "SMSGLOBAL_CLOSED_LOOP",
"pollPeriodMilliseconds": 500,
"url": "http://localhost:8089/pigeon/plugins/input/http/MOCK_SMSGLOBAL_HTTP",
"maxRetryCount": 0,
"normalThreadCount": 4,
"retryThreadCount": 0,
"conversionModuleName": "PASSTHROUGH_GET.groovy",
"senderClassName": "io.infinite.pigeon.http.SenderDefaultHttp",
"httpProperties": {
"username": "smsglobaluser",
"password": "smsglobalpassword"
},
"extensions": {
"from": "your%service"
}
}
]
}
]
}