This behavior might be expected, quoting description in apache kafka
documentation here <http://kafka.apache.org/documentation.html>

Kafka only provides a total order over messages within a partition, not
> between different partitions in a topic. Per-partition ordering combined
> with the ability to partition data by key is sufficient for most
> applications. However, if you require a total order over messages this can
> be achieved with a topic that has only one partition, though this will mean
> only one consumer process per consumer group.


On Wed, Nov 25, 2015 at 8:54 AM, Guozhang Wang <wangg...@gmail.com> wrote:

> With ack=1, if your code is does sth. like:
>
> producer1.send(msg1).get() // get() blocks until a response is received.
> producer2.send(msg2).get() // get() blocks until a response is received.
>
> Then the ordering is guaranteed though under a broker failure the acked
> messages may be lost if they have not been replicated.
>
> Guozhang
>
>
>
> On Mon, Nov 23, 2015 at 11:08 PM, Yonghui Zhao <zhaoyong...@gmail.com>
> wrote:
>
> > Thanks Guozhang, Most params are not set  in our config . So max retries
> > should be 3 by default
> >
> > In your explanation:
> >
> > a. msg1 sent, produce() returned.
> > b. msg2 sent.
> > c. msg1 failed, and retried.
> > d. msg2 acked.
> > e. msg1 acked.
> >
> > But is acks is 0,   "the  retries configuration will not take effect (as
> > the client won't generally know of any failures). "
> >
> >
> > And I find in new producer to be released acks default value is already
> > changed to 1.
> >
> >
> > If acks is set to 1, the order will be maintained even they are sent from
> > different producers?
> >
> >
> >
> > 2015-11-24 2:47 GMT+08:00 Guozhang Wang <wangg...@gmail.com>:
> >
> > > Yonghui,
> > >
> > > With ack = 0 and retries > 0 this could happen since producer.send()
> > > returns before it gets acked from the broker, so you could get the
> > > following trace:
> > >
> > > a. msg1 sent, produce() returned.
> > > b. msg2 sent.
> > > c. msg1 failed, and retried.
> > > d. msg2 acked.
> > > e. msg1 acked.
> > >
> > > Assuming you said "msg1 and msg2 may notbe sent by one producer", out
> of
> > > ordering can even happen more likely as they could arrive to the broker
> > > from different sockets at arbitrary ordering.
> > >
> > > Guozhang
> > >
> > > On Mon, Nov 23, 2015 at 4:31 AM, Yonghui Zhao <zhaoyong...@gmail.com>
> > > wrote:
> > >
> > > > The ack mode is default value 0.
> > > >
> > > >
> > > >    - 0, which means that the producer never waits for an
> > acknowledgement
> > > >    from the broker (the same behavior as 0.7). This option provides
> the
> > > > lowest
> > > >    latency but the weakest durability guarantees (some data will be
> > lost
> > > > when
> > > >    a server fails).
> > > >
> > > > And msg1 and msg2 may not be sent by one broker.
> > > >
> > > >
> > > > 2015-11-21 7:56 GMT+08:00 Guozhang Wang <wangg...@gmail.com>:
> > > >
> > > > > Yonghui,
> > > > >
> > > > > What is the ack mode for the producer clients? And are msg1 and
> msg2
> > > sent
> > > > > by the same producer?
> > > > >
> > > > > Guozhang
> > > > >
> > > > > On Thu, Nov 19, 2015 at 10:59 PM, Yonghui Zhao <
> > zhaoyong...@gmail.com>
> > > > > wrote:
> > > > >
> > > > > > Broker setting is:  8 partitions, 1 replica,  kafka version 0.8.1
> > > > > >
> > > > > > We send 2 message at almost same time.
> > > > > >
> > > > > > Msg1 first, Msg2 second.
> > > > > >
> > > > > > We have more than 1 producers in sync mode.
> > > > > >
> > > > > > We may send msg1 in one broker, after *producer.send return
> > response*
> > > > > > And send msg2 in the other broker.
> > > > > >
> > > > > > Both 2 msg has same partition key.
> > > > > >
> > > > > > In consumer side, we find the 2 msg is in same partition as
> > expected,
> > > > > but
> > > > > > the order is inverted as msg2, msg1.
> > > > > >
> > > > > > Is it possible for kafka?
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > -- Guozhang
> > > > >
> > > >
> > >
> > >
> > >
> > > --
> > > -- Guozhang
> > >
> >
>
>
>
> --
> -- Guozhang
>



-- 
Muqtafi Akhmad
Software Engineer
Traveloka

Reply via email to