Я пытаюсь создать службу агента индекса для установки Solr с несколькими экземплярами с использованием SolrNet.Я создал сервис, который будет использовать интерфейс для создания нескольких агентов для индексации.Эти агенты указываются во внешнем файле конфигурации и создаются динамически.Например, может быть 0-n каждого типа агента (обратите внимание на различия в URL):
PersonAgent http://localhost:8080/solr
ProductAgent http://localhost:8080/solr
ProductAgent http://localhost:9999/solr
Это, конечно, должно соответствовать чему-то вроде этого:
ISolrOperations<Person>
ISolrOperations<Product>
ISolrOperations<Product>
На основечто касается моих потребностей и того факта, что SolrNet не поддерживает несколько экземпляров для своего контейнера по умолчанию, я пытаюсь использовать Castle Windsor для этого.Согласно вики SolrNet на http://code.google.com/p/solrnet/wiki/MultiCoreAccess это довольно просто.
var solrFacility = new SolrNetFacility("http://localhost:8983/solr/defaultCore");
solrFacility.AddCore("core0-id", typeof(Product), "http://localhost:8983/solr/product");
solrFacility.AddCore("core1-id", typeof(Product), "http://localhost:8983/solr/product2");
solrFacility.AddCore(typeof(Person), "http://localhost:8983/solr/person"); // no need to set an explicit ID since it's the only core for Person
container.AddFacility("solr", solrFacility);
ISolrOperations<Person> solrPerson = container.Resolve<ISolrOperations<Person>>();
ISolrOperations<Product> solrProduct1 = container.Resolve<ISolrOperations<Product>>("core0-id"); // use proper Windsor service overrides instead of resolving like this
ISolrOperations<Product> solrProduct2 = container.Resolve<ISolrOperations<Product>>("core1-id");
Я не совсем потерян с идеей IoC, но я не уверен, что автор вики имел в виду под комментарием к "использовать правильные переопределения службы Windsor вместо того, чтобы разрешать вот так" как указано в примере кода.Очевидно, что пример явно идентифицирует ядро через id, но есть ли лучший / более гибкий способ?