Дизайн contract/C# 4.0/avoiding ArgumentNullException

Я не вижу его от потребителя, когда я поднимаюсь

blockquote>

Если вы запустите того же потребителя с тем же group.id, он будет сброшен из ранее сохраненных разделов при условии, что ваши потребительские смещения были зафиксированы ранее.
Поведение по умолчанию для новых групп потребителей состоит в том, чтобы начинать с самого последнего смещения, и вам нужно установить auto.offset.reset=earliest для запуска с начала. Кроме того, смещения автоматически фиксируются по умолчанию, и рекомендуется отключить это, чтобы гарантировать, что каждое сообщение фактически обрабатывается хотя бы один раз, и выполнять фиксацию смещения вручную. Об этом есть много хорошей документации в KafkaConsumer JavaDoc .

Если вы используете console-consumer, то по умолчанию всегда используется самое последнее смещение до добавления --from-beginning, но вы также можете добавить --group , чтобы присоединиться / возобновить группу потребителей.

5
задан David Schmitt 23 March 2009 в 12:24
поделиться

5 ответов

Можно создать a NotNull<T> универсальный класс, который помогает, но существует некоторые побочные эффекты. Посмотрите сообщение в блоге Robert Nystrom.

3
ответ дан 13 December 2019 в 22:18
поделиться

Rick Brewster описывает хорошее решение для краткого, декларативного параметра стиля, регистрируясь в этом сообщении,

http://blog.getpaint.net/2008/12/06/a-fluent-approach-to-c-parameter-validation/

Избегает использования отражения (недостаток DbC) и не создает издержек для неисключительного пути выполнения кода.

Как то, как он использует дополнительные методы для разрешения то, что, кажется, метод экземпляра, обращается к несуществующим объектам. Очень умный бит кодирования IMO.

Если Вы продаетесь на DbC, Google Spec# и PostSharp.

4
ответ дан 13 December 2019 в 22:18
поделиться

Как альтернатива уже данным ответам, это стоит изучить Null Object design pattern.

Сущность этого шаблона разработки - то, что, после того как "несуществующий объект" создается, нет никакой дальнейшей потребности выполнить любые проверки для пустого указателя, и методы несуществующего объекта реализуют поведение, желаемое каждый раз, когда пустой указатель (иначе) будет передан по сравнению со ссылкой на "реальный объект".

Этот шаблон разработки не зависит от C# 4.0 и на самом деле может быть легко реализован почти на любом языке программирования OO.

1
ответ дан 13 December 2019 в 22:18
поделиться

Не уверенный в собственных конструкциях DbC в C# 4.0, но Microsoft собирается выпустить межъязыковую библиотеку Contracts.
Можно загрузить версию для MSVS2008 здесь.

2
ответ дан 13 December 2019 в 22:18
поделиться

Я только что начал использовать Code Contracts - это новая функция в C # 4.0, вам нужно загрузить надстройку с MS, чтобы вы могли видеть ее в настройках вашего проекта. Подробности здесь -> http://research.microsoft.com/en-us/projects/contracts/

0
ответ дан 13 December 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: