Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Oct 21 02:50

    christopherread on master

    Removed log4net and updated Obv… (compare)

  • Oct 20 20:30
    christopherread milestoned #40
  • Oct 20 20:30
    christopherread assigned #41
  • Oct 20 20:30
    christopherread labeled #41
  • Oct 20 20:30
    christopherread milestoned #41
  • Oct 20 20:30
    christopherread opened #41
  • Oct 20 20:28
    christopherread opened #40
  • Oct 20 20:28
    christopherread review_requested #40
  • Oct 20 20:28
    christopherread assigned #40
  • Oct 20 20:26

    christopherread on subject-service-bus

    Removed Subscribe() from IServi… (compare)

  • Oct 20 20:09

    christopherread on subject-service-bus

    ServiceBus now uses an IService… (compare)

  • Oct 20 19:18

    christopherread on subject-service-bus

    Introduce new AllMessages optio… (compare)

  • Oct 18 23:18

    christopherread on master

    Update Obvs.RabbitMQ.sln (compare)

  • Oct 18 18:26

    christopherread on master

    Minor dependency updates, misse… (compare)

  • Oct 18 18:21

    christopherread on master

    Minor dependency updates (compare)

  • Oct 18 03:19
    christopherread closed #39
  • Oct 18 03:12

    christopherread on master

    Update appveyor.yml (compare)

  • Oct 18 03:03

    christopherread on master

    Updated to Obvs 5.0 (compare)

  • Sep 27 11:02

    megakid on master

    Added publicly visible interfac… Merge pull request #20 from pet… (compare)

  • Sep 27 11:02
    megakid closed #20
abrassara
@abrassara
@inter8ection Hi Christopher
I've been playing around with Obvs, it's a very cool piece of software!
I have some doubts on how to handle the following escenario with this library.
There's an endpoint defined on a server service bus that uses a filewatcher to check for new files in a directory. We need to check first for existing files in that directory to process them and then start receiving events on future files. Is there a way to do it inside the endpoint class? The thing is that if that check is done on the endpoint constructor and the events are build there for the previously existing files, there are no subscribers yet (they are defined after creating the service bus), so the events are lost.
Sure I can do it on the main class on the server service bus, but I wonder if there's a cleaner way to do it .
Thanks!
Christopher Read
@christopherread
Hi @abrassara, thanks. I can recommend checking out Observable.Create here: http://www.introtorx.com/content/v1.0.10621.0/04_CreatingObservableSequences.html, maybe you will find it useful. It's not clear from your description whether you want to send all file events since you started your process to each new subscriber, or not.
@abrassara ages ago I played round with using the FileSystemWatcher as a message transport, for people who couldn't install a broker in their environment. It was just for fun, and I really don't recommend it! But this code might be useful for your purposes:
https://github.com/inter8ection/Obvs.FileSystem/blob/master/Obvs.FileSystem/Utils/ObservableFileSystemWatcher.cs
Christopher Read
@christopherread
@/all good article on ingestors vs brokers
Simon McConnell
@Unthred
@inter8ection Hi when I am using rabbitMQ manually to send single messages I can add a clientProvidedName to the connection - makes it easier to track what is coming from where when examining stuff in rabbitmq's gui. Can I do the same with Obvs? I am trying to track down my connection count creeping up
abrassara
@abrassara
@inter8ection Thanks for your response, I'll check that out.
Christopher Read
@christopherread

@/all thanks to @megakid we have Obvs v4.0 on nuget, updated to System.Reactive 3.1.1
https://www.nuget.org/packages/Obvs

The other packages that have been updated so far are Obvs.ActiveMQ and Obvs.Serialization. The others will be updated soon.

Christopher Read
@christopherread
@/all there is a new version 4.0 of Obvs.RabbitMQ using Obvs 4.0 and Rx 3.0. No other breaking changes, should appear here shortly:
https://www.nuget.org/packages/Obvs.RabbitMQ
Christopher Read
@christopherread
@/all all packages now up to date and on v4.0
Christopher Read
@christopherread
@/all My #GitHub profile is no longer 'inter8ection', it has changed to 'christopherread'. Please update any remote #git repository URL's you may have for #Obvs
https://github.com/christopherread
Christopher Read
@christopherread
eg.
git remote set-url origin https://github.com/christopherread/Obvs
abrassara
@abrassara
@christopherread Hi, I've been using Obvs in a production environment with RabbitMQ transport, it's been working fine so far, the only problem I found is that all Obvs bus instances must be restarted since they do not recover automatically when Rabbit goes down for a while. Is this the expected behaviour? I mean, the library is not responsable to restore connections in case of a failure and this issue must be addressed at an upper tier ? Thanks, Andres.
Christopher Read
@christopherread
@abrassara I'll take a look. I'm not using it in production myself, so if you could advise on the calls you want made within Obvs I can make them, or you can submit a PR with a fix
Christopher Read
@christopherread
@abrassara I have taken a look, and according to this Obvs is doing what is expected
https://www.rabbitmq.com/dotnet-api-guide.html#connection-recovery
George Chatzimanolis
@geochatz
Hello! Thanks for the great library. I am testing Obvs with ActiveMQ. I have a question. Is it possible to provide Username and Password to your connection?
Christopher Read
@christopherread
@geochatz Hi George, welcome! The username/password config is not currently exposed for ActiveMQ but it could be added
Christopher Read
@christopherread
@geochatz check out v4.0.1 of Obvs.ActiveMQ on nuget.org, and use new fluent config extension WithCredentials(userName, password) to pass in credentials for the broker connection
Please feedback with any problems
George Chatzimanolis
@geochatz
@christopherread Wow! That was quick. Thanks. I will check it ASAP!!
James Connor
@megakid
@/all I have also released v4.1 which now has support for .NET Standard - 1.6 if I remember correctly. We will need to update the integrations and serialization libraries in time.
Christopher Read
@christopherread
Nice work @megakid, also I just merged the Obvs ActiveMQ PR with NET Standard 2 commits
James Connor
@megakid
@christopherread have you made a new nuget release Obvs.ActiveMQ 4.1 ?
I'm not desperate, just chipping away
Christopher Read
@christopherread
Nope not yet, but I will tonight
James Connor
@megakid
@christopherread I have lost access to the appveyor account to release nuget packages
maybe during your rename from inter8..
my appveyor acct seems to be JamesConnor
James Connor
@megakid
scrap that
found an account i didnt know I had
James Connor
@megakid
@christopherread have pushed v5
Christopher Read
@christopherread
@megakid yeah I log in using my github account usually
Nice!
Márcio Moreira
@arqeco
Hello, I need to develop an app that discover peers on local network and the communicates with them via messaging. Is Obvs for this kind of things?
Tom May
@tjdecke
Hi folks! Still loving Obvs. I have a large algo trading suite running on it, and am starting to convert most of the backend to Akka.NET, but i dont want to loose the convenience of Obvs in merging event streams etc.. i was wondering if anyone has explored/done some integration between Obvs and Akka.net, for example through Akka streams
James Connor
@megakid
@tjdecke funny you should say that as I’m also running an algo trading type solution on top of Obvs (using ActiveMQ integration and protobuf- May I ask what you’re using?) and we too are experimenting with Akka.NET - we’re not looking to use Akka remoting or clustering yet just for internal queuing/threading etc - were currently not far into that prototype (but have some discovery stories planned) - would be keen to team on any efforts in bridging with Obvs as we’re looking for a decent pattern for that
Tom May
@tjdecke
@megakid protobuf also, rabbitmq and in-memory (for some services we are still running in the same process, but want to potentially be able to split out as separately hosted services later)
happy to collaborate on it :)
ankorus
@ankorus
I use obvs from .net core 2.1 app w/o any problems. Trying to create obvs client bus from .net 4.7.2 winforms app I am getting the following System exception:
Error loading types from assembly 'Anonymously Hosted DynamicMethods Assembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null', please consider using the provided configuration options to filter which assemblies you would like to load your message types from.
Inner exception: The invoked member is not supported in a dynamic assembly.
    private static IServiceBusClient CreateServiceBusClient()
    {
        return ServiceBus.Configure()
            .WithRabbitMQEndpoints<IABCMessage>()
                .Named("ABCServiceObvs")
                .ConnectToBroker("amqp://localhost:5672")
                //.SerializedAsJson()
                .SerializedAsProtoBuf()
                .AsClient()
                .UsingConsoleLogging()
            .CreateClient();
    }
Packages:

<?xml version="1.0" encoding="utf-8"?>

<packages>
<package id="Microsoft.Diagnostics.Tracing.EventSource.Redist" version="1.1.28" targetFramework="net472" />
<package id="Obvs" version="5.0.0.26" targetFramework="net472" />
<package id="Obvs.RabbitMQ" version="4.1.0.5" targetFramework="net472" />
<package id="Obvs.Serialization.ProtoBuf" version="5.0.0.22" targetFramework="net472" />
<package id="protobuf-net" version="2.4.0" targetFramework="net472" />
<package id="RabbitMQ.Client" version="5.1.0" targetFramework="net472" />
<package id="System.Reactive" version="4.2.0-preview.102" targetFramework="net472" />
<package id="System.Reactive.Core" version="4.2.0-preview.102" targetFramework="net472" />
<package id="System.Reactive.Linq" version="4.2.0-preview.102" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net472" />
<package id="System.Threading.Tasks.Extensions" version="4.5.2" targetFramework="net472" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
</packages>

Please, help!
ankorus
@ankorus
It has something to do with protobuf. If un-comment .SerializedAsJson (and comment .SerializedAsProtoBuf) it works. SerializedAsProtoBuf works in .net core 2.1 'though.
Christopher Read
@christopherread
@ankorus that error is being thrown when it's trying to scan all assemblies in dir to find your message types, via reflection. As the error message suggests, there is a method to help, called .FilterMessageTypeAssemblies()
Christopher Read
@christopherread
Use that to only include your own assemblies, by passing in a lambda that checks assembly name, eg a => a.GetName().Name.StartsWith("MyProject")
I'm not sure which assembly is causing the error when you use protobuf, but hopefully the above should fix it
ankorus
@ankorus
Here is the list of assemblies filtered from framework: -mscorlib
ConsObvsApp
Obvs
-System.Reactive
Obvs.RabbitMQ
Obvs.Serialization.ProtoBuf
protobuf-net
-Anonymously Hosted DynamicMethods Assembly
RabbitMQ.Client
-System.Core
-System
Those marked with '-' are not getting listed when called from .net core. It looks like the problem is caused by Anonymously Hosted DynamicMethods Assembly. In another project I have seen Microsoft.GeneratedCode assembly. FilterMessageTypeAssemblies helps. Thx.