Skip to content

GSoC2014 Proposal: AMQP source (sajtos)

Mózes Ádám István edited this page Mar 21, 2014 · 2 revisions

AMQP Source

The goal of this project:

Currently, syslog-ng supports the Advanced Message Queuing Protocol (hereinafter referred to as "AMQP") only as destination driver. The working group of AMQP project contains big names of the IT industry (for example: Cisco Systems, Microsoft Corporation, Red Hat) and the AMQP is used widespreadly. These factors encourage us to implement the source driver, which can receive and interpret any message which conforms to the defined data format by the AMQP standard.

Benefits to the community:

With implementing this feature, even more people and organizations can use syslog-ng. The AMQP can provide some kind of flexibility, because the AMQP assumes very little about the sender and the receiver of the messages, so it is quite independent from the current implementation. Also, it became an OASIS standard of messaging at the end of 2012, so future applications might support this standard with higher probability.

Benefits of using message queuing:

Message queuing is a technique used in data processing. Without this technique both the sender and the receiver of the message need to be ready at the same time to communicate. With this technique, this is not needed, because the sender can put the message into a queue and the receiver can get its messages from the queue independently. The performance of the whole system is improved using this technique, because certain waiting times are completely eliminated.

Benefits of using Advanced Message Queuing Protocol:

AMQP supports some useful features like end-to-end message signing, and/or encryption, integrity checks. AMQP can be used in simple peer-to-peer systems and in larger, richer messaging networks. As mentioned earlier, the interoperability of AMQP is the most important advantage. Features like message properties, annotations and headers make it a good for a enterprise applications.

Project Deliverables:

  • A new source plugin that can receive messages from an AMQP server

This plugin is the primary deliverable of the project, and the base of the further deliverables. The source plugin should be able to support subscribing to given topics, because the AMQP gives such features. When the publisher publishes ​to the interesting topics, the plugin should create syslog-ng events, and these events should be handled correctly.

  • ​Optionally, we should deliver some underlying core library work, such as a generic threaded source driver class.

Brief Timeline:

  • From 21 April to 19 May:

    • Reading documentation of syslog-ng and the AMQP specification.
    • Getting familiar with the syslog-ng codebase
    • Getting up to speed to begin working on the project
  • From 20 May to 22 June:

    • Designing the structure of the new source plugin
    • Implementing and integrating at least the basics of the new source plugin
  • From 23 June to 27 June:

    • Implementing all of the suggested features of the source plugin
  • From 28 June to 3 August:

    • Underlying core lib. design and work
  • From 4 August to 17 August:

    • Finalizing the changes in the content.
    • Refactoring, writing tests, improving documentation
    • Technically, this two weeks are buffer weeks.
  • From 18 August to 22 August:

    • Finalizing the code for the final evaluation

I do not expect any longer period away from keyboard. At the moment I have not got any plans about vacation, travel, but at the beginning of the project I will have a few exams.

Contact information:

My past work experience:

I was always interested in programming, especially making a model to non-trivial problems, and designing systems. Maybe this is the main reason, why I am an undergraduate Computer Engineering student at Budapest University of Technology and Economics. I expect to graduate in 2016. After graduation, I really want to be a master's student, and after that a PhD student. In the meantime, I am a junior developer of Sophos Hungary Ltd. for seven months. I am quite familiar with C, C++, C#, Java, Perl, Verilog, and I really want to learn Go, Haskell and LISP. The methodologies of the open source development is not unknown to me. To be honest, I fanatically love git, and I can learn always something fascinating about it. Currently I am using Arch Linux as primary operating system and Gentoo as a secondary one. (Maybe this behaviour reflects some kind of masochism.)

References:

Last but not least I want to express my gratitude to Gergely Nagy for sharing me his helpful thoughts about this project.

Clone this wiki locally