Skip to content
HTTP Message Broker
Groovy
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
gradle/wrapper Use latest BlackBox Mar 18, 2019
pigeon-app Change Group ID to io.i-t Aug 19, 2019
pigeon-lib Change Group ID to io.i-t Aug 19, 2019
.gitignore Use latest BlackBox Mar 18, 2019
.travis.yml Travis preparation Jan 16, 2019
Bobbin.json Add readableHttpLogs API Mar 21, 2019
LICENSE Initial commit Oct 17, 2018
README.md Update README.md Apr 16, 2019
build.gradle Fix Bintray Upload Mar 18, 2019
gradlew Travis preparations Jan 16, 2019
gradlew.bat Use latest infinite tools Dec 17, 2018
settings.gradle Separate lib and app modules Jan 14, 2019

README.md

Infinite Technology ∞ Pigeon 🕊

Attribute\Release type Latest
Version 1.0.0-SNAPSHOT
Branch master
CI Build status Build Status
Test coverage codecov
Library (Maven) oss.jfrog.org snapshot
Heroku Heroku

Purpose

Pigeon is an end-user server application (HTTP Message Broker) designed for distribution of text messages in HTTP format.

In short

Pigeon is capable to:

  1. Enqueue a text message from external source using REST API or direct insert into Pigeon DB by the external app
  2. 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)
  3. 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)
  4. If needed retry sending the message several times

Documentation

Technology stack

  • 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)

Try me now!

We have deployed a demo Pigeon Plugins repository is as a demo Heroku app (pigeon-public).

Just open the below URL in your browser:

https://pigeon-public.herokuapp.com/pigeon/enqueue?source=browser&endpoint=GET_TO_SMTP&recipient=email@gmail.com&subject=Test123&text=Test1234&from=pigeon@i-t.io

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.

Sample configuration

{
  "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"
          }
        }
      ]
    }
  ]
}
You can’t perform that action at this time.