Skip to content

Change republish logic to get messages with blocking call #5

@jfontan

Description

@jfontan

The current code does a non blocking read and retries after 50ms if no message was received. This wastes 50ms per job published:

time="2018-06-12T13:11:51.289605092Z" level=debug msg="received empty job" retries=0 source="amqp/amqp.go:360"
time="2018-06-12T13:11:51.3399403Z" level=debug msg="republished job" duration=62.436µs id=264fee23-13a2-4835-b091-138ed0c0cfb3 source="amqp/amqp.go:400"
time="2018-06-12T13:11:51.340008442Z" level=debug msg="received empty job" retries=0 source="amqp/amqp.go:360"
time="2018-06-12T13:11:51.390390193Z" level=debug msg="republished job" duration=102.438µs id=4441f18d-425b-41fd-90d8-e030b929076b source="amqp/amqp.go:400"
time="2018-06-12T13:11:51.390468293Z" level=debug msg="received empty job" retries=0 source="amqp/amqp.go:360"
time="2018-06-12T13:11:51.440788261Z" level=debug msg="republished job" duration=66.511µs id=c2daff16-97a7-4bd8-a7e7-0d5e6b6011b2 source="amqp/amqp.go:400"
time="2018-06-12T13:11:51.440856836Z" level=debug msg="received empty job" retries=0 source="amqp/amqp.go:360"
time="2018-06-12T13:11:51.491297249Z" level=debug msg="republished job" duration=109.879µs id=7ab5e472-ef93-4596-8c45-380096ca1425 source="amqp/amqp.go:400"
time="2018-06-12T13:11:51.491402971Z" level=debug msg="received empty job" retries=0 source="amqp/amqp.go:360"
time="2018-06-12T13:11:51.541833233Z" level=debug msg="republished job" duration=97.156µs id=7d5d28f5-5c88-4927-bfa5-0d1c13e34242 source="amqp/amqp.go:400"
time="2018-06-12T13:11:51.541908884Z" level=debug msg="received empty job" retries=0 source="amqp/amqp.go:360"
time="2018-06-12T13:11:51.592080956Z" level=debug msg="received empty job" retries=1 source="amqp/amqp.go:360"
time="2018-06-12T13:11:51.642332159Z" level=debug msg="received empty job" retries=2 source="amqp/amqp.go:360"
time="2018-06-12T13:11:51.692657338Z" level=debug msg="received empty job" retries=3 source="amqp/amqp.go:360"
time="2018-06-12T13:11:51.743047815Z" level=debug msg="received empty job" retries=4 source="amqp/amqp.go:360"
time="2018-06-12T13:11:51.743236765Z" level=debug msg="maximum number of retries reached" max-retries=3 retries=4 source="amqp/amqp.go:371"
time="2018-06-12T13:11:51.743286551Z" level=debug msg="rejecting 0 non complying jobs" source="go-log.v1/default.go:51"
time="2018-06-12T13:11:51.745363Z" level=info msg="stopping republishing jobs" source="go-log.v1/default.go:56"

Change to a blocking channel read with a timer:

https://github.com/src-d/go-queue/blob/master/amqp/amqp.go#L502-L513

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions