Я не вижу его от потребителя, когда я поднимаюсь
blockquote>Если вы запустите того же потребителя с тем же
group.id
, он будет сброшен из ранее сохраненных разделов при условии, что ваши потребительские смещения были зафиксированы ранее.
Поведение по умолчанию для новых групп потребителей состоит в том, чтобы начинать с самого последнего смещения, и вам нужно установитьauto.offset.reset=earliest
для запуска с начала. Кроме того, смещения автоматически фиксируются по умолчанию, и рекомендуется отключить это, чтобы гарантировать, что каждое сообщение фактически обрабатывается хотя бы один раз, и выполнять фиксацию смещения вручную. Об этом есть много хорошей документации в KafkaConsumer JavaDoc .Если вы используете
console-consumer
, то по умолчанию всегда используется самое последнее смещение до добавления--from-beginning
, но вы также можете добавить--group
, чтобы присоединиться / возобновить группу потребителей.
Можно создать a NotNull<T>
универсальный класс, который помогает, но существует некоторые побочные эффекты. Посмотрите сообщение в блоге Robert Nystrom.
Rick Brewster описывает хорошее решение для краткого, декларативного параметра стиля, регистрируясь в этом сообщении,
http://blog.getpaint.net/2008/12/06/a-fluent-approach-to-c-parameter-validation/
Избегает использования отражения (недостаток DbC) и не создает издержек для неисключительного пути выполнения кода.
Как то, как он использует дополнительные методы для разрешения то, что, кажется, метод экземпляра, обращается к несуществующим объектам. Очень умный бит кодирования IMO.
Если Вы продаетесь на DbC, Google Spec# и PostSharp.
Как альтернатива уже данным ответам, это стоит изучить Null Object design pattern
.
Сущность этого шаблона разработки - то, что, после того как "несуществующий объект" создается, нет никакой дальнейшей потребности выполнить любые проверки для пустого указателя, и методы несуществующего объекта реализуют поведение, желаемое каждый раз, когда пустой указатель (иначе) будет передан по сравнению со ссылкой на "реальный объект".
Этот шаблон разработки не зависит от C# 4.0 и на самом деле может быть легко реализован почти на любом языке программирования OO.
Не уверенный в собственных конструкциях DbC в C# 4.0, но Microsoft собирается выпустить межъязыковую библиотеку Contracts.
Можно загрузить версию для MSVS2008 здесь.
Я только что начал использовать Code Contracts - это новая функция в C # 4.0, вам нужно загрузить надстройку с MS, чтобы вы могли видеть ее в настройках вашего проекта. Подробности здесь -> http://research.microsoft.com/en-us/projects/contracts/