Pregunta

Me he encontrado recientemente un problema con la naturaleza multi-hilo del asignador de BizTalk y cómo se maneja montajes externos.

Como esta cita de MSDN indica:

  

Importante: Cualquier código escrito en una   montaje externo para su uso en una   scripting functoid necesita ser hilo   seguro. Esto es necesario porque   varias instancias de un mapa pueden utilizar   estos casos .NET en tiempo de ejecución en virtud   condiciones de estrés.

El Mapper reutilizará casos de conjuntos externos.

En un conjunto de utilidad mi equipo estaba usando tuvimos el siguiente código:

public class MapUtil
{
    private string _storeReference;

    public void SetStoreReference(string ref)
    {
       _storeReference = ref;
    }

    public string GetStoreReference()
    {
        return _storeReference;
    }
}

Esto causaba storereferences de un archivo a ser asignada a diferentes archivos.

I (aparecerá) haber solucionado este decorando el campo privado con [ThreadStatic]

[ThreadStatic]
private static string _storeReference;

Mi pregunta es - ¿alguien sabe de algún problema con esto en el asignador de BizTalk? Soy consciente de que hay problemas utilizando [ThreadStatic] en Asp.Net para examble, debido a las discusiones sean reutilizados, pero puedo encontrar ninguna documentación sobre la forma en que el asignador de BizTalk con hilos.

¿Fue útil?

Solución 2

He Aún no encuentra una declaración definitiva en la línea de 'El comportamiento de roscado dentro del asignador de BizTalk es xyz, por lo que debe tener cuidado de utilizar el método ABC' y no estoy seguro de que tal respuesta se va a venir de cualquier parte fuera del equipo de producto de BizTalk.

Mi un colega con contactos directos con el equipo de producto es de baja por Navidad extendida (perro afortunado) de modo hasta que vuelva yo sólo pensé en cuenta que con el cambio realizado en nuestro código no hemos visto ni una sola repetición del enhebrar problemas en el servidor de alto volumen de producción.

Bien - que no es del todo cierto, pude pasar por alto la palabra clave estática de una propiedad en mi clase de ayuda y para que la propiedad que todavía veía los problemas de threads. Voy a tomar eso como prueba de ThreadStatic ser el camino correcto a seguir por ahora.

Otros consejos

He utilizado ThreadStatic para establecer una variable es canalización de recepción personalizada y luego acceder a su valor dentro de BizTalk mapa (a través de una clase de ayuda). no han conseguido ningún problema hasta ahora -. probado con ~ 50 invocaciones en paralelo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top